NelsonLabs
Flask/Routing & URL Parameters

Routing & URL Parameters

Flask routes map URLs to Python functions using decorators. The routing system is simple but powerful — supporting parameters, multiple methods, and any URL pattern you need.

Flask routing
python
from flask import Flask, redirect, url_for

app = Flask(__name__)

# Basic route
@app.route("/")
def index():
    return "Home page"

# Accept multiple HTTP methods
@app.route("/courses", methods=["GET", "POST"])
def courses():
    if request.method == "POST":
        return create_course()
    return list_courses()

# URL parameters — dynamic segments
@app.route("/courses/<slug>")
def course_detail(slug):
    course = get_course_by_slug(slug)
    return jsonify(course)

# Type converters for parameters
@app.route("/courses/<int:course_id>")         # must be an integer
@app.route("/users/<string:username>")          # explicit string
@app.route("/files/<path:filename>")            # includes slashes

# url_for() — generate URLs by function name (safer than hardcoding)
url_for("course_detail", slug="nextjs")  # "/courses/nextjs"
redirect(url_for("index"))               # redirect to home