Мне было интересно, существует ли троичный оператор (условие? Истинное значение: ложное значение), который можно использовать в шаблоне Django.Я вижу, что есть Python один (true-значение, если условие, иначе false-значение), но я не уверен, как использовать это внутри шаблона Django для отображения HTML, заданного одним из значений.Есть идеи?
Вы можете использовать фильтр yesno:
{{ value|yesno:"yeah,no,maybe" }}
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#yesno
Зачем вам нужен троичный оператор в шаблоне?{% if %} и {% else %} - все, что вам нужно.
{% if %}
{% else %}
Или вы можете попробовать тег firstof:
firstof
{% firstof var1 var2 var3 %}
, который выводит первый из var1, var2 или var3, который оцениваетк истинному значению.
Просто потому, что они еще не были упомянуты здесь: встроенные теги шаблонов default и default_if_none могут быть полезны в простых обстоятельствах:
default
default_if_none
по умолчанию Если значение равно False, используется заданное значение по умолчанию. В противном случае используется значение. Например: {{ value|default:"nothing" }} Если значение равно "" (пустая строка), на выходе ничего не будет. default_if_none Если (и только если) значение Нет, используется заданное значение по умолчанию. В противном случае используется значение>. Обратите внимание, что если задана пустая строка, значение по умолчанию не будет использоваться. Используйте> фильтр по умолчанию, если вы хотите использовать запасные пустые строки. Например: {{ value|default_if_none:"nothing" }} Если значение равно None, выводом будет строка «nothing».
Если значение равно False, используется заданное значение по умолчанию. В противном случае используется значение.
Например:
{{ value|default:"nothing" }}
Если значение равно "" (пустая строка), на выходе ничего не будет.
Если (и только если) значение Нет, используется заданное значение по умолчанию. В противном случае используется значение>.
Обратите внимание, что если задана пустая строка, значение по умолчанию не будет использоваться. Используйте> фильтр по умолчанию, если вы хотите использовать запасные пустые строки.
{{ value|default_if_none:"nothing" }}
Если значение равно None, выводом будет строка «nothing».
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default
Я только что реализовал троичный оператор для Django в виде тега, см. https://github.com/alexei/django-template-extensions Вы можете использовать его как:
{% ?: exp1 exp2 exp3 %} {% ?: exp1 exp2 %}
Или:
{% iif exp1 exp2 exp3 %} {% iif exp1 exp2 %}
Я понял, что он имеет больше смысла, чем фильтр yesno, хотя на самом деле это не тот Питон.
yesno
Ты не. Шаблонный тег Django {% if %} только начал поддерживать ==, and и т. Д. {% if cond %}{% else %}{% endif %} настолько компактен, насколько это возможно.
==
and
{% if cond %}{% else %}{% endif %}
Интересно, будет ли работать питон и / или трюк?
condition and true_value or false_value
ведет себя как троичный оператор - выводит true_value, если условие оценивается как True, и false_value, если нет.