public:appro-s7:td_web:templates

Ceci est une ancienne révision du document !


Templates Django

Il est temps d'afficher des données ! Pour nous aider, Django fournit des balises de gabarit (template tags) qui sont intégrées au framework. Pour le reste du tutoriel, nous utiliserons plutôt le mot template, bien plus répandu que sa traduction "gabarit".

Qu'est-ce que c'est que des balises de template ?

En HTML, vous ne pouvez pas mettre directement du code Python car les navigateurs seraient incapables de le comprendre. Les navigateurs ne connaissent que le HTML. Nous vous avons signalé précédemment que HTML est du genre statique, alors que Python est bien plus dynamique.

Les Balises de template Django nous permettent de transférer des choses ressemblant à du Python dans du HTML afin de nous permettre de construire des sites web plus rapidement. Cool, non ?

Template d'affichage de la liste des billets

Dans le chapitre précédent, nous avons donné à notre template une liste de billets à l'aide de la variable billets. Nous allons maintenant les afficher en HTML.

Afin d'afficher une variable dans un template Django, nous utiliserons des doubles accolades avec le nom de la variable à l'intérieur. Ça ressemble à ceci :

blog/templates/blog/post_list.html

{{ billets }}

Essayez de faire la même chose avec votre template blog/templates/blog/post_list.html. Ouvrez-le avec votre éditeur et remplacez tout ce qui se trouve entre la seconde balise

jusqu'au troisième

avec la ligne billets. Sauvegardez votre fichier et rafraîchissez votre page pour voir le résultat :

https://tutorial.djangogirls.org/fr/django_templates/images/step1.png

Comme vous pouvez le voir, tout ce que nous avons, c'est ceci :

blog/templates/blog/post_list.html

<QuerySet [<Billet: My second post>, <Billet: My first post>]>

Cela signifie que Django l'interprète comme une liste d'objets. Essayez de vous rappeler comment afficher des listes en Python. Dans un template Django, vous pouvez les écrire de la façon suivante :

blog/templates/blog/post_list.html

{% for billet in billets %}

  {{ billet }}

{% endfor %}

Essayez ceci dans votre template.

[Image: Figure 13.2](image_link)

Ça marche ! Cependant, nous aimerions plutôt afficher les billets à la manière des billets statiques, comme lorsque nous les avions créés dans le chapitre Introduction au HTML. Vous pouvez mélanger HTML et balises de template. Notre <body> ressemble maintenant à ceci :

blog/templates/blog/post_list.html

  <h1><a href="/">Django Girls Blog</a></h1>

{% for billet in billets %}

  <div>
      <p>published: {{ billet.published_date }}</p>
      <h2><a href="">{{ billet.title }}</a></h2>
      <p>{{ billet.text|linebreaksbr }}</p>
  </div>

{% endfor %}

Tout ce qui se situe entre {% for %} et {% endfor %} va être répété pour chaque objet présent dans la liste. Rafraîchissez votre page :

[Image: Figure 13.3](image_link)

Avez-vous remarqué que nous avons utilisé une notation légèrement différente cette fois-ci (billet.title ou billet.text) ? Nous accédons aux données associées à chaque champ défini dans notre modèle Billet. De même, le |linebreaksbr nous permet de rediriger le texte des billets à travers un filtre qui convertit automatiquement les fins de lignes en paragraphes.

Ça a marché ? Bravo ! Éloignez vous un peu de votre clavier maintenant : vous avez mérité de faire une pause. :)

[Figure 13.4](image_link)

<h1 id="templates-django">Templates Django</h1> <p>Il est temps d&apos;afficher des donn&#xE9;es ! Pour nous aider, Django fournit des balises de gabarit (<strong>template tags</strong>) qui sont int&#xE9;gr&#xE9;es au framework. Pour le reste du tutoriel, nous utiliserons plut&#xF4;t le mot template, bien plus r&#xE9;pandu que sa traduction &quot;gabarit&quot;.</p> <h2 id="quest-ce-que-cest-que-des-balises-de-template-">Qu&apos;est-ce que c&apos;est que des balises de template ?</h2> <p>En HTML, vous ne pouvez pas mettre directement du code Python car les navigateurs seraient incapables de le comprendre. Les navigateurs ne connaissent que le HTML. Nous vous avons signal&#xE9; pr&#xE9;c&#xE9;demment que HTML est du genre statique, alors que Python est bien plus dynamique.</p> <p>Les <strong>Balises de template Django</strong> nous permettent de transferer des choses ressemblant &#xE0; du Python dans du HTML afin de nous permettre de construire des sites web plus rapidement. Cool, non ?</p> <h2 id="template-daffichage-de-la-liste-des-billets">Template d&apos;affichage de la liste des billets</h2> <p>Dans le chapitre pr&#xE9;c&#xE9;dent, nous avons donn&#xE9; &#xE0; notre template une liste de billets &#xE0; l&apos;aide de la variable <code>billets</code>. Nous allons maintenant les afficher en HTML.</p> <p>Afin d&apos;afficher une variable dans un template Django, nous utiliserons des doubles accolades avec le nom de la variable &#xE0; l&apos;int&#xE9;rieur. &#xC7;a ressemble &#xE0; ceci :</p> <p></p><p class="code-label">blog/templates/blog/post_list.html</p><p></p> <pre><code class="lang-html">{{ billets }} </code></pre> <p>Essayez de faire la m&#xEA;me chose avec votre template <code>blog/templates/blog/post_list.html</code>. Ouvrez-le avec votre &#xE9;diteur et remplacez tout ce qui se trouve entre la seconde balise <code>&lt;div&gt;</code> jusqu&apos;au troisi&#xE8;me <code>&lt;/div&gt;</code> avec la ligne <code>{{ billets }}</code>. Sauvegardez votre fichier et rafraichissez votre page pour voir le r&#xE9;sultat :</p> <p><img src="https://tutorial.djangogirls.org/fr/django_templates/images/step1.png" alt="Figure 13.1" width=300></p> <p>Comme vous pouvez le voir, tout ce que nous avons, c&apos;est ceci :</p> <p></p><p class="code-label">blog/templates/blog/post_list.html</p><p></p> <pre><code class="lang-html">&lt;QuerySet [&lt;Billet: My second post&gt;, &lt;Billet: My first post&gt;]&gt; </code></pre> <p>Cela signifie que Django l&apos;interpr&#xE8;te comme une liste d&apos;objets. Essayez de vous rappeler comment afficher des listes en Python. Dans un template Django, vous pouvez les &#xE9;crire de la fa&#xE7;on suivante :</p> <p></p><p class="code-label">blog/templates/blog/post_list.html</p><p></p> <pre><code class="lang-html">{% for billet in billets %} {{ billet }} {% endfor %} </code></pre> <p>Essayez ceci dans votre template.</p> <p><img src="https://tutorial.djangogirls.org/fr/django_templates/images/step2.png" alt="Figure 13.2" width=300></p> <p>&#xC7;a marche ! Cependant, nous aimerions plut&#xF4;t afficher les billets &#xE0; la mani&#xE8;re des billets statiques, comme lorsque nous les avions cr&#xE9;&#xE9;s dans le chapitre <strong>Introduction au HTML</strong>. Vous pouvez mixer HTML et balises de template. Notre <code>body</code> ressemble maintenant &#xE0; ceci :</p> <p></p><p class="code-label">blog/templates/blog/post_list.html</p><p></p> <pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">&quot;/&quot;</span>&gt;</span>Django Girls Blog<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>   {% for billet in billets %} <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>published: {{ billet.published_date }}<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">&quot;&quot;</span>&gt;</span>{{ billet.title }}<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>{{ billet.text|linebreaksbr }}<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span> {% endfor %} </code></pre> <p>Tout ce qui se situe entre <code>{% for %}</code> et <code>{% endfor %}</code> va &#xEA;tre r&#xE9;p&#xE9;t&#xE9; pour chaque objet pr&#xE9;sent dans la liste. Rafraichissez votre page :</p> <p><img src="https://tutorial.djangogirls.org/fr/django_templates/images/step3.png" alt="Figure 13.3" width=300></p> <p>Avez-vous remarqu&#xE9; que nous avons utilis&#xE9; une notation l&#xE9;g&#xE8;rement diff&#xE9;rente cette fois-ci (<code>{{ billet.title }}</code> ou <code>{{ billet.text }}</code>) ? Nous acc&#xE9;dons aux donn&#xE9;es associ&#xE9;es &#xE0; chaque champ d&#xE9;fini dans notre mod&#xE8;le <code>Billet</code>. De m&#xEA;me, le <code>|linebreaksbr</code> nous permet de rediriger le texte des billets &#xE0; travers un filtre qui convertit automatiquement les fins de lignes en paragraphes.</p>   <p>&#xC7;a a march&#xE9; ? Bravo ! &#xC9;loignez vous un peu de votre clavier maintenant : vous avez m&#xE9;rit&#xE9; de faire une pause. :)</p> <p><img src="https://tutorial.djangogirls.org/fr/django_templates/images/donut.png" alt="Figure 13.4" width=300></p> 13. Le CSS

  • public/appro-s7/td_web/templates.1698660221.txt.gz
  • Dernière modification : 2023/10/30 11:03
  • de edauce