Chapter 3 of 10
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.
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