Templates aufwerten ******************* Das Template zur Darstellung eines Rezepts ist bis jetzt sehr einfach gehalten. Wir werden einige Eigenschaften des Models hinzufügen und die Darstellung optimieren. Anzahl der Portionen ==================== Alter Code: .. code-block:: html+django
Ergibt {{ object.number_of_portions }} Portionen.
Neuer Code: .. code-block:: html+djangoErgibt {{ object.number_of_portions }} Portion{{ object.number_of_portions|pluralize:"en" }}.
Hier bestimmst du mit dem Filter ``pluralize``, ob das Attribut ``number_of_portions`` den Wert 1 oder höher hat. Ist der Wert höher, werden die Buchstaben "en" angehängt. Schwierigkeitsgrad ================== Den Schwierigkeitsgrad haben wir bis jetzt noch nicht ausgegeben. Versuche es mit diesem Code: .. code-block:: html+djangoSchwierigkeitsgrad: {{ object.difficulty }}
Ist das Ergebnis wie erwartet? Nein, natürlich wird eine Zahl ausgegeben. Wir hatten als Feldtyp auch ``SmallIntegerField`` gewählt. Also brauchen wir einen Helfer, der uns statt der Zahl das Wort ausgibt. Glücklicherweise kann jedes Model das zum Wert passende Label ausgeben. Jedes Feld, dessen Schlüssel-Wert-Paare mit ``choices`` definiert wurden, hat eine Methode ``get_FIELD_display()``. Diese gibt das Label aus. Also kannst du folgenden Code im Template nutzen, um den Schwierigkeitsgrad als Wort auszugeben: .. code-block:: html+djangoSchwierigkeitsgrad: {{ object.get_difficulty_display }}
Autor ===== Als nächstes wollen wir den Autor ausgeben, was wieder einfach ist: .. code-block:: html+djangoAutor: {{ object.author }}
Kategorien ========== Jetzt fehlen nur noch die Kategorien. Um zu verstehen, wie die Kategorien im Template ausgegeben werden können müssen wir uns erst das Model ansehen: .. code-block:: pycon $ python manage.py shell Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from recipes.models import Recipe >>> r = Recipe.objects.all()[1] >>> r.category