Что такое эквивалент "нет"в шаблонах 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 %}