Aller au contenu

Paramètres d'URL

Objectif : lire une valeur passée dans l'adresse, par exemple ?name=Roger.

Ce que vous allez apprendre : récupérer une valeur de la chaîne de requête avec request.query("name", default=...), avec une valeur de repli quand le paramètre est absent.

Votre WelcomeController possède déjà la méthode index (palier précédent), et mvc/routes.py déclare la route /welcome.

Nous y ajoutons une méthode et une route.

Voir l'illustration

Documentations

Pour bien comprendre ce palier :

Document Ce qu'il apporte
L'objet Request les accesseurs de la requête, dont query(...)
L'objet Response la réponse renvoyée, ici encore en texte brut
Contrôleurs

Ajoutez cette méthode à la classe WelcomeController :

    # Ajoutez ?name=Roger à l'URL, puis ouvrez /welcome/hello?name=Roger
    @staticmethod
    def hello(request: Request) -> Response:
        name = request.query("name", default="Forge")
        return Response.text(f"Bonjour {name}")
Élément Rôle
request.query("name", default="Forge") Lit la valeur name de la chaîne de requête ; renvoie default si la clé est absente, donc ni exception ni None à gérer.

La valeur retournée est toujours de type str ; une conversion (entier, date) reste à votre charge dans le contrôleur.

Routes

Ajoutez la route dans le groupe public de mvc/routes.py :

# mvc/routes.py
from core.http.router import Router
from mvc.controllers.home_controller import HomeController
from mvc.controllers.welcome_controller import WelcomeController

router = Router()

with router.group("", public=True) as public:
    public.add("GET", "/", HomeController.index, name="home-index")
    public.add("GET",  "/welcome", WelcomeController.index, name="welcome-index")
    public.add("GET",  "/welcome/hello", WelcomeController.hello, name="welcome-hello")
Tests
URL Résultat
https://localhost:8000/welcome/hello Bonjour Forge
https://localhost:8000/welcome/hello?name=Roger Bonjour Roger
https://localhost:8000/welcome/hello?name=Alice Bonjour Alice
À retenir
  • request.query(cle, default=...) lit une valeur de la chaîne de requête.
  • default=... est renvoyé si la clé est absente : pas d'exception, pas de None à gérer.
  • La réponse reste un Response.text(...), donc aucun template.

Au palier suivant, nous passons du texte brut à une vraie page HTML.

Continuer avec Première vue HTML