Что эквивалентно "none" в шаблонах django?
Я хочу посмотреть, нет ли поля/переменной в шаблоне Django. Каков правильный синтаксис для этого?
Это то, что у меня есть:
{% if profile.user.first_name is null %}
<p> -- </p>
{% elif %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}
В приведенном выше примере, что бы я использовал для замены "null"?
Ответы
Ответ 1
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 }}
Надеюсь, что это поможет:)
Ответ 2
Вы также можете использовать другой встроенный шаблон default_if_none
{{ profile.user.first_name|default_if_none:"--" }}
Ответ 3
Посмотрите yesno помощник
Например:
{{ myValue|yesno:"itwasTrue,itWasFalse,itWasNone" }}
Ответ 4
{% if profile.user.first_name %}
работает (предполагается, что вы также не хотите принимать ''
).
if
в Python вообще рассматривает None
, False
, ''
, []
, {}
,... все как false.
Ответ 5
Вам не нужно делать это "если", используйте: {{ profile.user.get_full_name }}
Ответ 6
Вы также можете использовать встроенный фильтр шаблонов default
:
Если значение принимает значение False (например, None, пустая строка, 0, False); отображается по умолчанию "-".
{{ profile.user.first_name|default:"--" }}
Документация:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
Ответ 7
is
operator: Новое в Django 1.10
{% if somevar is None %}
This appears if somevar is None, or if somevar is not found in the context.
{% endif %}