Files
gauvainboiche 0d071d2843 Semaine 11
2026-07-11 21:38:00 +02:00

4.3 KiB
Raw Permalink Blame History

Exercice 3.3 - Jinja2 multi-pages

Navigation + templates dynamiques (sans base de données)


Objectifs pédagogiques

  • structurer une application Flask avec plusieurs routes ;
  • générer plusieurs pages HTML avec Jinja2 ;
  • utiliser des templates réutilisables ;
  • exploiter des données simulées côté serveur (Python) ;
  • manipuler boucles et conditions dans Jinja2 ;
  • construire une navigation entre pages ;
  • séparer clairement logique serveur et affichage.

Contexte

Vous développez une mini application de type tableau de bord de gestion de parc informatique.

Les données sont simulées en mémoire (liste Python).

Lapplication doit permettre :

  • dafficher une liste globale des équipements ;
  • de voir uniquement les équipements actifs ;
  • de consulter une page de détail par équipement ;
  • de naviguer entre les pages via des liens HTML.

Structure proposée

app.py
/templates
    base.html
    index.html
    actifs.html
    detail.html

Travail demandé


Étape 1 - Initialiser lapplication Flask

Créer une application Flask fonctionnelle. Lapplication doit pouvoir afficher une page daccueil.


Étape 2 - Créer les données simulées

Définir côté serveur une liste Python représentant des équipements. Chaque équipement contient :

  • un identifiant ;
  • un nom ;
  • un statut (actif / inactif) ;
  • une catégorie (serveur, poste, réseau, etc.).

Ces données sont fixes et non modifiables.


Étape 3 - Créer une structure de templates

Mettre en place :

  • un template principal servant de base commune ;
  • une structure avec bloc de contenu réutilisable ;
  • un menu de navigation commun à toutes les pages.

Le menu doit permettre de naviguer entre les pages principales.


Étape 4 - Page daccueil (liste complète)

Créer une route et une page affichant :

  • la liste complète des équipements ;
  • toutes leurs informations.

Dans le template :

  • utiliser une boucle Jinja2 ;
  • afficher chaque équipement dans un bloc structuré ;
  • distinguer visuellement les équipements actifs et inactifs avec une condition.

Étape 5 - Page “équipements actifs”

Créer une page dédiée affichant uniquement :

  • les équipements actifs.

La logique de filtrage doit être réalisée côté serveur (Python), pas dans le template.

Dans le template :

  • afficher uniquement les éléments fournis par la vue ;
  • utiliser une boucle simple sans logique complexe.

Étape 6 - Page de détail dun équipement

Créer une route dynamique permettant dafficher :

  • un équipement spécifique selon son identifiant.

La page doit afficher :

  • toutes les informations de l’équipement ;
  • un message derreur si lidentifiant nexiste pas.

Dans le template :

  • utiliser des variables Jinja2 ;
  • utiliser une condition pour gérer le cas “non trouvé”.

Étape 7 - Navigation entre pages

Dans le template principal :

  • ajouter un menu de navigation commun ;
  • permettre daccéder à toutes les pages ;
  • assurer une cohérence visuelle sur toutes les vues.

Étape 8 - Mise en forme Jinja2 obligatoire

Dans les templates, vous devez utiliser :

  • des boucles {% for %} ;
  • des conditions {% if %} ;
  • des variables {{ }} ;
  • au moins un bloc réutilisable (block) ;
  • une logique de filtrage côté Python (obligatoire).

Étape 9

Ajouter :

  • une page “statistiques” affichant :

    • nombre total d’équipements ;
    • nombre dactifs ;
    • nombre dinactifs ;
  • un message conditionnel si la liste est vide dans une page.


Livrables attendus

  • application Flask fonctionnelle ;
  • plusieurs routes Python ;
  • 3 à 4 templates Jinja2 ;
  • aucune base de données ;
  • aucune méthode POST ;
  • aucune modification de données.

Compétences évaluées

Compétence Niveau attendu
Flask routing Plusieurs routes fonctionnelles
Jinja2 Boucles + conditions maîtrisées
Architecture templates base.html + héritage
Séparation logique/vue filtrage côté Python
Navigation web cohérence UX simple
Lecture de données affichage structuré