Django-templates: Warum nicht {% if "string"|Länge > 10 %}, alle am arbeiten?
Bin ich mit Django 1.3. Wenn ich das folgende fragment in mein template:
{% if 'my string'|length > 10 %}{{ 'my string'|length }}{% endif %}
die rendering-engine druckt '9'. Das einzige was ich mir vorstellen kann ist, dass die |length
filter Rückgabe ein string, aber das scheint seltsam in die extreme. Kann jemand mich in die richtige Richtung?
Dank!
Edit:
Die Länge will ich eigentlich testen, kommt aus flatpage.title
zur Verfügung gestellt von django.contrib.flatpages
. Aus diesem Grund, möchte ich lieber nicht hacken Sie die Ansicht, um die Informationen, die ich brauche, um die Vorlage. Ich hatte gehofft, ich könnte einfach die |length
filter, wie beschrieben in der Django-docs, hier. Jedoch, wie bereits schon betont wurde, ist der einzige Weg, dies zu tun zu sein scheint, auch die |get_digit
filter, deren Verhalten sich nicht eindeutig in dieser Hinsicht. 🙁
InformationsquelleAutor der Frage simon | 2011-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, die Filter immer eine Zeichenkette zurückgeben.
Können Sie erreichen die gewünschte Funktionalität durch die Berechnung der string-Länge in einer Ansicht und tun Sie etwas wie dieses:
Oder erstellen Sie einen benutzerdefinierten filter für Ihre Bedürfnisse: http://code.djangoproject.com/wiki/BasicComparisonFilters
Bearbeitet für Tippfehler
InformationsquelleAutor der Antwort Silver Light
Ich bin empfehlen, nicht mit dieser aber ich habe kombiniert die
get_digit
und dielength
filtern, bevor diese Arbeit zu machen.Ergebnisse, die in nichts in der Vorlage, aber:
Ergebnisse in:
gedruckt werden.
InformationsquelleAutor der Antwort DTing
Versuchen Sie Folgendes bedingt:
{% if flatpage.Titel.10 %}
InformationsquelleAutor der Antwort user2183078
Gehen, um den Advocatus Diaboli spielen hier, und sich Fragen, warum ist das notwendig? Es ist eine Sache, wenn man die Berechnung auf den Wert einer variable, wenn es aber ein hart kodierter Wert, nur legen Sie es dort in die richtige form. Alles, was Sie tun, ist das hinzufügen der Verarbeitung Aufwand für etwas, das statisch ist.
InformationsquelleAutor der Antwort Chris Pratt