Paramètres d'URL¶
Objectif : lire une valeur passée dans l'URL avec request.param(...).
Ce que vous allez apprendre : récupérer une valeur de la query string
(?name=Roger) avec request.param("name", default=...), et fournir une
valeur par défaut quand le paramètre est absent — sans exception ni
None à gérer.
Ce starter est identifié par query-params dans la CLI Forge
(aliases query_params / params). Il représente le palier 2 de
la
progression officielle des starters,
juste après Bonjour Forge.
Ce que ce starter installe¶
- une route
/query-params - une route
/query-params/hello - un contrôleur
QueryParamsControlleravec deux méthodes - aucune vue HTML
- aucune base de données
Classes Forge utilisées¶
| Classe | Rôle dans ce starter | Référence |
|---|---|---|
Request |
Lire un paramètre de query string avec request.param(...). |
Request |
Response |
Construire la réponse texte avec Response.text(...). |
Response |
BaseController |
Classe parente du contrôleur. | BaseController |
Exemple¶
/query-params/hello?name=Roger
retourne :
Bonjour Roger
Sans paramètre, /query-params/hello retourne Bonjour Forge (valeur
par défaut).
Les routes¶
# mvc/routes.py
from mvc.controllers.query_params_controller import QueryParamsController
with router.group("", public=True) as pub:
pub.add("GET", "/query-params", QueryParamsController.index, name="query_params_index")
pub.add("GET", "/query-params/hello", QueryParamsController.hello, name="query_params_hello")
Comprendre ce code¶
- Deux routes publiques dans le même groupe : une page d'accueil
informative, et
/query-params/helloqui lit le paramètre. - Le
name=est utile même pour des URL fixes : il permet ensuite de générer l'URL depuis un template avecurl_for("query_params_hello"), au lieu de la coder en dur.
Le contrôleur¶
# mvc/controllers/query_params_controller.py
from core.http.request import Request
from core.http.response import Response
from core.mvc.controller.base_controller import BaseController
class QueryParamsController(BaseController):
"""Starter pédagogique : lire des paramètres d'URL."""
@staticmethod
def index(request: Request) -> Response:
return Response.text(
"Ajoutez ?name=Roger à l'URL, puis ouvrez /query-params/hello?name=Roger"
)
@staticmethod
def hello(request: Request) -> Response:
name = request.param("name", default="Forge")
return Response.text(f"Bonjour {name}")
Comprendre ce code¶
- Un paramètre d'URL (ou query string) est la partie après le
?:?name=Rogerapporte la valeurname=Roger. request.param("name", default="Forge")lit cette valeur. Le second argument évite tout cas particulier « clé absente ».- Le type retourné est toujours
str; toute conversion (int, date…) est à faire explicitement côté contrôleur. - La réponse reste un
Response.text(...)— aucun template ici, donc rien à rendre.
Tester dans le navigateur¶
| URL | Résultat |
|---|---|
https://localhost:8000/query-params |
message d'aide |
https://localhost:8000/query-params/hello |
Bonjour Forge |
https://localhost:8000/query-params/hello?name=Roger |
Bonjour Roger |
https://localhost:8000/query-params/hello?name=Alice |
Bonjour Alice |
À retenir¶
request.param(key, default=...)lit une valeur de la query string (?key=valeur).- Le second argument
default=...est la valeur retournée si la clé est absente — pas d'exception, pas deNoneà manipuler. - Le type retourné est toujours
str(ou la valeur dedefault). - Aucun template, aucun moteur de rendu : la réponse reste en
text/plain.
Après ce starter¶
Passez au palier suivant : Première vue HTML.
Vous y apprendrez à rendre une page HTML avec :