Skip to content

Handling Query Parameters

Query parameters are the ?key=value?key=value part of a URL.

Example:

  • /search?q=flask&page=2/search?q=flask&page=2

Accessing query parameters

Flask stores query parameters in request.argsrequest.args.

from flask import Flask, request
 
app = Flask(__name__)
 
 
@app.route("/search")
def search():
    q = request.args.get("q", "")
    page = request.args.get("page", default=1, type=int)
    return {"q": q, "page": page}
from flask import Flask, request
 
app = Flask(__name__)
 
 
@app.route("/search")
def search():
    q = request.args.get("q", "")
    page = request.args.get("page", default=1, type=int)
    return {"q": q, "page": page}

Why use type=type=?

  • Converts the string to the type you expect
  • If conversion fails, Flask returns the default (instead of crashing)

Handling multiple values

Some URLs have repeated params:

  • /filter?tag=python&tag=flask/filter?tag=python&tag=flask
tags = request.args.getlist("tag")
tags = request.args.getlist("tag")

Validation basics

Even with type=inttype=int, you still should validate:

  • ranges (page >= 1)
  • allowed values (sort in top)

If invalid, return a clear error or a 400 status code.

๐Ÿงช Try It Yourself

Exercise 1 โ€“ Create a Flask App

Exercise 2 โ€“ Dynamic Route

Exercise 3 โ€“ Return JSON

If this helped you, consider buying me a coffee โ˜•

Buy me a coffee

Was this page helpful?

Let us know how we did