Что такое эквивалент "нет"в шаблонах django?
Я хочу увидеть, если поле/переменная нет в шаблоне Django. Каков правильный синтаксис для этого?
Это то, что у меня сейчас есть:
{% if profile.user.first_name is null %}
<p> -- </p>
{% elif %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}
в приведенном выше примере, что бы я использовал для замены "null"?
7 ответов:
None, False and True
все они доступны в шаблонах тегов и фильтров.None, False
пустая строка ('', "", """"""
) и пустые списки / кортежи все оценивают вFalse
по оценкеif
, так что вы можете легко сделать{% if profile.user.first_name == None %} {% if not profile.user.first_name %}
подсказка: @fabiocerqueira прав, оставьте логику моделям, ограничьте шаблоны, чтобы быть единственным слоем презентации и вычислять такие вещи в вашей модели. Пример:
# someapp/models.py class UserProfile(models.Model): user = models.OneToOneField('auth.User') # other fields def get_full_name(self): if not self.user.first_name: return return ' '.join([self.user.first_name, self.user.last_name]) # template {{ user.get_profile.get_full_name }}
надеюсь, что это помогает :)
вы также можете использовать другой встроенный шаблон
default_if_none
{{ profile.user.first_name|default_if_none:"--" }}
посмотреть yesno помощник
например:
{{ myValue|yesno:"itwasTrue,itWasFalse,itWasNone" }}
{% if profile.user.first_name %}
работает (предполагая, что вы также не хотите принимать''
).
if
в Питоне вообще лечитNone
,False
,''
,[]
,{}
, ... все как ложь.
вы также можете использовать встроенный шаблон filter
default
:Если значение равно False (например, None, пустая строка, 0, False); по умолчанию отображается"--".
{{ profile.user.first_name|default:"--" }}
документация: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
is
оператор: новый в Django 1.10{% if somevar is None %} This appears if somevar is None, or if somevar is not found in the context. {% endif %}