Architecture d'un projet Runique

Tags et filtres Tera

Tags Django-like (syntaxe sucrée)

TagTransformé enDescription
{% static "..." %}{{ "..." | static }}URL d'un fichier statique
{% media "..." %}{{ "..." | media }}URL d'un fichier média
{% csrf %}{% include "csrf" %}Champ CSRF caché
{% messages %}{% include "message" %}Affichage messages flash
{% csp %}{% include "csp" %}Attribut nonce CSP
{% link "name" %}{{ link(link='name') }}URL d'une route nommée
{% form.xxx %}{{ xxx | form | safe }}Rendu formulaire complet
{% form.xxx.field %}{{ xxx | form(field='field') | safe }}Rendu d'un champ
{% form.xxx.js %}{{ xxx | form(field='js') | safe }}Scripts JS du form (rendu champ par champ)

Filtres Tera

FiltreDescription
staticPréfixe URL statique de l'app
mediaPréfixe URL média de l'app
formRendu de formulaire complet ou par champ
csrf_fieldGénère un input hidden CSRF

Fonctions Tera

FonctionDescription
link(link='...')Résolution d'URL nommée

En situation

Les tags se combinent dans un template réel :

{% extends "base.html" %}

{% block content %}
  <link rel="stylesheet" href="{% static "css/contact.css" %}">

  {% messages %}

  <form method="post" action="{% link "contact" %}">
    {% form.contact_form %}
    <button type="submit">Envoyer</button>
  </form>

  <img src="{% media avatar %}" alt="avatar">
{% endblock %}

{% static %} / {% media %} acceptent une chaîne littérale ou une variable Tera (avatar ci-dessus). Voir Tags Django-like pour le détail de chaque tag.