2016-12-20 3 views
1

Ich habe mit verschiedenen Python ternäre Operatoren stoßen wie:Python HTML-Template ternäre Operator

a if b else 0 

aber es hat nicht funktioniert, wenn ich es in Django HTML-Vorlage zu schließen versucht

{% a if b else 0 %} 

Hier ist die genaue Code, den ich verwenden werde aber nicht funktionieren:

{% 'error' if form.title.errors else '' %} 

oder

{% form.title.errors ? 'error' : '' %} 

Ich mag es nicht die üblichen

{% if form.title.errors %}error{% endif %} 

zu tun, weil es vor allem in meiner Meinung sperrig aussieht, wenn ich eine andere Anweisung hinzufügen.

Irgendwelche Vorschläge? oder sollte ich einfach dabei bleiben?

Antwort

3

Sie können mehr oder weniger das Verhalten Sie mit dem yesno Filter (documentation) wollen erhalten:

{{ form.title.errors|yesno:"errors," }} 
+0

hervorragend !, dies versucht, aber nicht wissen, dass Sie ein einfügen müssen Komma am Ende –

2

In Django, die templatetags nur {% if %}{% else %}{% endif %} unterstützen. Wenn Sie nicht verwenden möchten:

{% if form.title.errors %}error{% endif %} 

können Sie versuchen:

{{ error|default:'' }} 

Und der Test in django Vorlage ist unten:

...from django.template import Context, Template 
...from django.conf import settings 
...settings.configure() 
...t = Template("My name is: {{ name|default:'anonymous' }} ") 

Wenn default:

...t.render(Context({})) 

wird es zurückkehren:

'My name is anonymous ' 

Wenn hat Name:

...t.render(Context({"name": "John"})) 

Ergebnis:

'My name is John ' 

Lesen Sie mehr: https://docs.djangoproject.com/en/1.9/ref/templates/

Verwandte Themen