====== Templates ====== Doc de **Jinja** : * [[https://jinja.palletsprojects.com/en/3.0.x/templates/]] * [[https://jinja.palletsprojects.com/en/3.1.x/]] Les templates sont généralement placés dans un dossier **/templates** /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) -%} {%- 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() %} {% endfor %}
{{key}} {{value}}
===== 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' %}