Flask Routing & URL Building
π£οΈ Basic route
@app.route("/about")
def about():
return "About page"π― Dynamic segments + converters
@app.route("/user/<username>") # string, default
@app.route("/post/<int:post_id>") # int
@app.route("/price/<float:amount>") # float
@app.route("/files/<path:filepath>") # string but allows slashes| Converter | Matches |
|---|---|
string (default) | text, no slash |
int | positive integer |
float | positive float |
path | text incl. slashes |
uuid | UUID format |
Converters auto-validate + auto 404 on mismatch. Free validation.
π¬ HTTP methods
@app.route("/submit", methods=["GET", "POST"])
def submit():
if request.method == "POST":
return "submitted"
return "form here"Default = GET only.
π url_for
url_for("about") # "/about"
url_for("show_user", username="amit") # "/user/amit"
url_for("search", query="flask", page=2) # "/search?query=flask&page=2" (extra kwargs β query string)Always use
url_forover hardcoded paths β one place to update if a route URL changes.
π Redirect
from flask import redirect, url_for
return redirect(url_for("home"))β οΈ Trailing slash
@app.route("/projects/") # /projects β redirects to /projects/
@app.route("/projects") # /projects/ β 404π§Ύ Multiple routes, one function
@app.route("/")
@app.route("/home")
def home():
return "Welcome"π Next
Flask Request & Response Objects Β· Flask Templates (Jinja2)