Подтвердить что ты не робот

Тройной оператор шаблонов шаблонов Django

Мне было интересно, существует ли тройной оператор (условие? true-value: false-value), которое можно использовать в шаблоне Django. Я вижу, что есть python one (true-value if condition else false-value), но я не уверен, как использовать это внутри шаблона Django для отображения html, заданного одним из значений. Любые идеи?

4b9b3361

Ответ 1

Зачем вам нужен трехмерный оператор в шаблоне? {% if %} и {% else %} - все, что вам нужно.

Или вы можете попробовать тег firstof:

{% firstof var1 var2 var3 %}

который выводит первый из var1, var2 или var3, который оценивает значение True.

Ответ 3

Просто потому, что они еще не упоминались здесь: встроенные теги шаблона default и default_if_none могут быть полезны в простых обстоятельствах:

по умолчанию

Если значение принимает значение False, используется заданное значение по умолчанию. В противном случае используется значение.

Например:

{{ value|default:"nothing" }}

Если значение равно "(пустая строка), вывод будет ничем.

default_if_none

Если (и только если) значение равно None, используется заданное значение по умолчанию. В противном случае используется значение > .

Обратите внимание, что если указана пустая строка, значение по умолчанию не будет использоваться. Используйте > фильтр по умолчанию, если вы хотите отступить для пустых строк.

Например:

{{ value|default_if_none:"nothing" }}

Если значение равно None, на выходе будет строка" Nothing".

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default

Ответ 4

Нет. Шаблон tempatetag от Django {% if %} только что начал поддерживать ==, and и т.д. {% if cond %}{% else %}{% endif %} настолько компактен, насколько это возможно.

Ответ 5

Я только что применил тернарный оператор для Django в качестве тега, см. https://github.com/alexei/django-template-extensions Вы можете использовать его как:

{% ?: exp1 exp2 exp3 %}
{% ?: exp1 exp2 %}

Или:

{% iif exp1 exp2 exp3 %}
{% iif exp1 exp2 %}

Я понял, что это имеет больше смысла, чем фильтр yesno, хотя это действительно не тот Pythonic.

Ответ 6

Интересно, работает ли python и/или трюк?

condition and true_value or false_value

ведет себя подобно тернарному оператору - выводит true_value, если условие имеет значение True, а false_value, если нет.