Outils pour utilisateurs

Outils du site


dev:python:flask:templates

Ceci est une ancienne révision du document !


:TODO_DOCUPDATE:

Flask : Utilisation des templates

Généralités

Grossièrement, le template est une page web à trous. Il contient des sections statiques en HTML/javascript directement interprétables par le navigateur web et des section non remplies désignées placeholders. Le contenu des placeholders est généré par l'application à l'exécution pour obtenir un comportement dynamique.

Flask s'appuie sur le moteur Jinja2 pour la gestion des templates. Plusieurs éléments syntaxiques sont disponibles pour délimiter les sections à l'attention du moteur de templates :

  • {{ }} Affiche le résultat du code Python ;
  • {% %} Code Python à interpréter ;
  • {# #} Commentaires.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>FlaskApp</title>
</head>
<body>
    {# Affiche le contenu de la variable msg comme titre #}
    <h1>{{ msg }}</h1>
    <h2>Welcome to FlaskApp!</h2>
</body>
</html>

Rendu du template

Pour pouvoir générer la partie dynamique du template via le framework Flask, on utilise la fonction helper render_template(). Effectuer le rendu du template, c'est générer le contenu des placeholders pour produire une page web complète pouvant être retournée au client.

Par défaut, le framework Flask est paramétré pour rechercher les templates dans le sous-dossier ./templates de l'application.
from flask import Flask, render_template
 
# ... 
 
@app.route('/')
    def supply_index() -> str:
        msg = "Hello World !!!"
        return render_template('index.html', msg=msg)
 
Flash utilise la notion de routes pour associer une ou plusieurs URL à une fonction Python en charge de produire une vue, un résultat exploitable par le client (une page web). confère routage

Objets accessibles depuis le template

A l'intérieur des templates les objets suivants sont disponibles :

  • config ;
  • request ;
  • session ;
  • g (variables globales).

Les fonctions url_for() et get_flashed_messages() sont également disponibles.

La fonction url_for()

Depuis le template on peut utiliser la fonction helper url_for() pour créer un lien vers une autre page : l'argument est le nom de la fonction associée à la route :

Dans notre projet Flask, on a une fonction nommée par exemple new_universe :

@app.route('/create/universe', methods=['GET', 'POST'])
def new_universe():
    if request.method == 'POST':
...

Cette fonction est associée à la route /create/universe. Dans notre template si on souhaite créer le lien vers cette page on peut produire le code suivant :

...
 <a href="{{ url_for('new_universe') }}" class="active tm-paging-link">+</a>
...

Le système de filtre

Notion d'héritage pour les templates

Le document de base contient du code HTML pouvant être partagé par d'autres pages (factorisation).

  • On crée un document contenant des sections vides nommées avec la syntaxe

Formater la date dans le template

Le plus simple est d'appeler la méthode strftime() sur l'objet de type datetime :

<div>
  <span>{{ universe.created_on.strftime('%d-%m-%Y') }}</span>
</div>

Références

dev/python/flask/templates.1774696074.txt.gz · Dernière modification : 2026/03/28 11:07 de yoann