API de rendu de template Flask
Flask utilise le moteur Jinja2 pour rendre les templates, en intégrant les données Python dans les pages HTML.
Les fichiers de template sont par défaut placés dans le répertoire racine du projettemplates/dans le dossier.
render_template
La fonction de rendu de template la plus couramment utilisée, charge un template depuis un fichier et le rend.
| Paramètre | Type | Description |
|---|---|---|
| template_name_or_list | str / list | Nom de fichier du template (relatif au dossier templates), ou une liste de noms de templates (renvoie le premier qui existe). |
| **context | Arguments nommés | Variables transmises au template, telles que title="Hello", user=user_obj |
Toutes les fonctions de rendu
| Fonction | Description |
|---|---|
| render_template(template_name_or_list, **context) | Effectue le rendu d'un template à partir d'un fichier, renvoie une chaîne HTML. |
| render_template_string(source, **context) | Rend un template à partir d’une chaîne, adapté aux templates intégrés. |
| stream_template(template_name_or_list, **context) | Diffuse le template rendu, renvoie un générateur. Adapté aux pages volumineuses. |
| stream_template_string(source, **context) | Rendu en flux des templates de chaînes |
| get_template_attribute(template_name, attribute) | Récupère une macro ou une variable depuis le template. Permet d’appeler des macros Jinja2 depuis Python. |
Objets intégrés dans les templates
Les objets suivants sont disponibles dans les templates sans être passés explicitement :
| Object | Description |
|---|---|
| request | Objet de requête actuel |
| session | Objet de session actuel |
| g | Objet global au niveau de la requête |
| config | Dictionnaire de configuration de l’application |
| url_for | Fonction de génération d'URL |
| get_flashed_messages | Fonction de récupération des messages Flask |
Exemples de code
Exemple
from flask import Flask, render_template, render_template_string
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html",
title=EXEMPLE Accueil,
posts=[{"id": 1, "title": Article A},
{"id": 2, "title": Article B}])
@app.route("/inline")
def inline_template():
# Effectuer le rendu à partir d'une chaîne (contenu du modèle écrit directement dans le code)
return render_template_string("""
<h1>Bonjour, {{ name }}!</h1>
<p>Bienvenue sur EXAMPLE.</p>
""", name="Monde")
@app.route("/stream")
def stream_large_page():
# Rendu en flux de grandes pages, génération et envoi à la volée
return stream_template("large_report.html",
items=get_10k_items())
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html",
title=EXEMPLE Accueil,
posts=[{"id": 1, "title": Article A},
{"id": 2, "title": Article B}])
@app.route("/inline")
def inline_template():
# Effectuer le rendu à partir d'une chaîne (contenu du modèle écrit directement dans le code)
return render_template_string("""
<h1>Bonjour, {{ name }}!</h1>
<p>Bienvenue sur EXAMPLE.</p>
""", name="Monde")
@app.route("/stream")
def stream_large_page():
# Rendu en flux de grandes pages, génération et envoi à la volée
return stream_template("large_report.html",
items=get_10k_items())