URL building means generating a URL from an endpoint name instead of typing the path by hand. url_for() takes the endpoint, usually the view function's name, plus a keyword argument for each URL variable.
from flask import url_for
@app.route('/user/<username>')
def user_profile(username):
return f'Profile for {username}'
@app.route('/')
def index():
# Generate URL for user_profile endpoint
profile_url = url_for('user_profile', username='john')
return f'<a href="{profile_url}">John\'s Profile</a>'
Here url_for('user_profile', username='john') returns /user/john. Arguments that match no URL variable become query parameters. This reverse lookup has three benefits:
Changing a route updates every link that uses its endpoint.
Special characters are escaped for you.
The paths are absolute, and they stay correct when the app is mounted under a prefix.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.