Analyse: Templates - paul-tat/tgbbz1Base GitHub Wiki
Templates
Was sind Templates in Django
Templates sind Html Dateien in welchen Programmcode stehen kann. Bevor die View an den Benutzer zurückgegeben wird, wird der Programmcode innerhalb der Datei ausgewertet.
Welche Komponenten gibt es?
Man unterscheidet zwischen 4 Komponenten:
- Variablen
- Filter
- Tags
- Kommentare
Variablen
Variablen sind recht selbsterklärend der Inhalt wird beim auswerten durch den Inhalt der Variable ersetzt.
<p> {{ Model.Name }} </p>
In diesem Beispiel wird ein p-Tag erstellt welche als Content den Inhalt der Variable von Model.Name hat. Nicht nur Variable Inhalte können angezeigt werden es kann auch Logik implementiert werden in form von if/else und for-Schleifen. Hier mehr dazu.
Filter
Filter wie schon im Namen steckt filtern den Inhalt einer Vairable.
{{ value|lower }}
In diesem Beispiel wird der "lower" Filter verwendet, welcher alle Großbuchstaben der Variable in Kleinbuchstaben verwandelt. Eine volle liste aller Filter ist hier zu finden.
Tags
Tags sind im Gegensatz zu Variablen die Logik implementation. Django bietet hier vorgefertigte.
Ein paar gängige Tags sind:
{% for item in list %}
... irgendein Html text oder weitere tags ...
{% endfor %}
In diesem Beispiel wird der Inhalt der for-Schleife (oder auch foreach genannt) so oft wie es Elemente in der Liste gibt ausgeführt und auf den Inhalt des derzeitigen Elementes ist in der variable "item" enthalten.
Ein weitere oft benutzer Tag ist der "If/else" Tag:
{% if condition_is_true %}
Do this block
{% else %}
If not do this block
{% endif %}
Dieser Tag ist gleichzustellen mit dem if/else aus anderen Programmiersprachen. Wenn die Kondition nach dem "if" wahr ist wird der nächste block ausgeführt, wenn nicht wird der übernächste Block (auch else-Block genannt) ausgeführt.
Kommentare
Kommentare können mir Django auch in die Source Dateien geschrieben werden. Kommentare werden von der Auswertungsengine nicht verarbeitet d.h. sie tragen nicht zur Steuerung des Programmes bei.
<p>Rendered text with {{ pub_date|date:"c" }}</p>
{% comment "Optional note" %}
<p>Commented out text with {{ create_date|date:"c" }}</p>
{% endcomment %}