Aller au contenu

Première vue HTML

Objectif : rendre une vraie page HTML au lieu de texte brut.

Ce que vous allez apprendre : rendre un gabarit avec BaseController.render(...), qui passe la requête au moteur de template et renvoie la page HTML.

WelcomeController porte déjà index et hello (paliers précédents), et mvc/routes.py déclare /welcome et /welcome/hello.

Nous ajoutons une méthode, une route et un gabarit.

Documentations

Pour bien comprendre ce palier :

Document Ce qu'il apporte
L'objet Response la réponse renvoyée, désormais produite par un gabarit
L'objet Request la requête transmise au moteur de template
Contrôleurs

Ajoutez cette méthode à la classe WelcomeController :

    @staticmethod
    def html(request: Request) -> Response:
        return BaseController.render("welcome/first.html", request=request)
Élément Rôle
BaseController.render("welcome/first.html", request=request) Cherche le gabarit sous mvc/views/ et le rend en HTML. Le chemin est relatif à mvc/views/ : ici le fichier vit dans mvc/views/welcome/.
request=request Donne au gabarit l'accès au contexte de la requête courante.

Le contrôleur reste mince : il choisit le gabarit, le gabarit gère l'affichage.

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")
    public.add("GET",  "/welcome/html", WelcomeController.html, name="welcome-html")
Vues

Créez le gabarit mvc/views/welcome/first.html :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <title>Première vue HTML</title>
</head>
<body>
    <h1>Première vue HTML</h1>
    <p>
        Cette page est rendue par <code>BaseController.render(...)</code> :
        le contrôleur ne construit plus le texte à la main, il délègue
        l'affichage à un gabarit.
    </p>
</body>
</html>
Tests
URL Résultat
https://localhost:8000/welcome/html la page HTML « Première vue HTML »
À retenir
  • BaseController.render(...) renvoie une page HTML rendue par le moteur de template.
  • Les gabarits vivent sous mvc/views/.
  • Le contrôleur reste mince : il choisit le gabarit, le gabarit gère l'affichage.

Au palier suivant, nous lisons une valeur directement dans le chemin de l'URL.

Continuer avec Route dynamique