/home/marc/mon_projet
├── venv
│ └── ...
├── templates
│ └── index.html
└── app.py
La fonction **render_template** :
from flask import render_template
@app.route("/")
def home():
return render_template("index.html")
Passage de valeurs au template :
{{titre}}
{{contenu}}
@app.route("/article/")
def article(id):
return render_template(
"article.html",
titre = "Article n°%s" % id,
contenu = "Contenu de l'article..."
)
===== Héritage de templates =====
Template de base :
{% block pagetitle %}{% endblock %}
{% block body %}{% endblock %}
Template pour l'affichage d'un article ; ce template **hérite** de base.html :
{% extends "base.html" %}
{% block pagetitle %}
Article : {{titre}}
{% endblock %}
{% block body %}
{{titre}}
{{contenu}}
{% endblock %}
===== Déclaration de tableau d'objets =====
Exemple : un menu déclaré sous forme de tableau JSON dont le
rendu est effectué dans un boucle.
{%
set items = [
{ "title": "Accueil", "url": url_for('home') },
{ "title": "Admin", "url": url_for('admin') }
]
%}
===== Macros =====
{% macro menu_item(title, url) -%}
{{ title }}
{%- endmacro %}
Si les macros sont stockées dans un fichier séparé, utiliser
la commande **import** et préfixer les appels d'un alias :
{% import "macros.html" as m %}
{{ m.menu_item("Exemple", url_for('test')) }}
===== Dictionnaire =====
Pour afficher le contenu d'un dictionnaire dans un tableau,
l'important est d'appeler la méthode **items()** du dictionnaire
lorsqu'on veut le parcourir dans une boucle :
@app.route("/test")
def test():
return render_template("test.html",
dictionnaire = {
'nom' : 'Dupont',
'prenom': 'Albert',
'ville' : 'Bourg-les-Endives',
... : ...
}
)
{% for key, value in dictionnaire.items() %}
{{key}}
{{value}}
{% endfor %}
===== Accès aux données de l'application et de la configuration =====
Pour accéder à la configuration de l'application, utiliser la variable **config** :
Environnement: {{config['ENV']}}
- ou -
Environnement: {{config.ENV}}
{% if config.ENV = 'development' %}