Как я могу различать None
и False
в шаблонах django?
{% if x %}
True
{% else %}
None and False - how can I split this case?
{% endif %}
Каждый контекст шаблона Django содержит Истина
, Ложь
и Нет
. Для Django 1.10 и новее вы можете сделать следующее:
{% if x %}
True
{% elif x is None %}
None
{% else %}
False (or empty string, empty list etc)
{% endif %}
Django 1.9 и более ранние версии не поддерживают оператор is
в теге if
. В большинстве случаев вместо этого можно использовать {% if x == None%}
.
{% if x %}
True
{% elif x == None %}
None
{% else %}
False (or empty string, empty list etc)
{% endif %}
В Django 1.4 и ранее у вас нет доступа к True
, False
и None
в контексте шаблона. Вы можете использовать дано
вместо этого.
В представлении:
x = True
y = False
z = None
В шаблоне:
{{ x|yesno:"true,false,none" }}
{{ y|yesno:"true,false,none" }}
{{ z|yesno:"true,false,none" }}
Результат:
true
false
none
Вы можете создать собственный фильтр:
@register.filter
def is_not_None(val):
return val is not None
, а затем использовать его:
{% if x|is_not_None %}
{% if x %}
True
{% else %}
False
{% endif %}
{% else %}
None
{% endif %}
Конечно, вы можете настроить фильтр, чтобы проверить любое условие, которое вам нравится ...