2016-12-20 3 views
1

я сталкивался с разным питоном трехкомпонентными операторами, такие как:шаблона Python HTML троичного оператор

a if b else 0 

, но он не работает, когда я попытался включить его в шаблоне Django HTML

{% a if b else 0 %} 

Вот точный код, который я буду использовать, но не будет работать:

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

или

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

Я не люблю делать обычные

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

, потому что он выглядит громоздким, на мой взгляд, особенно если добавить оператор еще.

Любые предложения? или я должен просто придерживаться его?

ответ

3

Вы можете получить более или менее поведение, которое вы хотите с помощью yesno фильтра (documentation):

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

великолепно !, попытался это, но не знал, что вам нужно, чтобы вставить запятая в конце –

2

В Django, что templatetags просто поддерживают {% if %}{% else %}{% endif %}. Если вы не хотите использовать:

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

Вы можете попробовать:

{{ error|default:'' }} 

И тест в шаблоне Джанго находится ниже:

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

Если по умолчанию:

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

он вернет:

'My name is anonymous ' 

Если есть имя:

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

результат:

'My name is John ' 

Подробнее: https://docs.djangoproject.com/en/1.9/ref/templates/