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 }}
Надеюсь это поможет :)
{% if profile.user.first_name is None %}
вызывает синтаксическую ошибку в шаблоне Django.default_if_none
фильтр в шаблоне?Вы также можете использовать другой встроенный шаблон
default_if_none
источник
date
сначала подаете заявку . Если произойдет какая-либо ошибка, он вернет None. Потом подаешь заявкуdefault_if_none
.is
оператор: Новое в Django 1.10источник
Посмотри на помощника дано
Например:
источник
{% if profile.user.first_name %}
работает (при условии, что вы также не хотите принимать''
).if
в Python вообще лечитNone
,False
,''
,[]
,{}
, ... все как ложное.источник
Вы также можете использовать встроенный шаблонный фильтр
default
:Если значение равно False (например, None, пустая строка, 0, False); по умолчанию отображается «-».
Документация: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
источник
Вы можете попробовать это:
Таким образом, вы, по сути, проверяете,
first_name
имеет ли поле формы какое-либо значение, связанное с ним. См{{ field.value }}
в Looping над полей формы в Django в документации .Я использую Django 3.0.
источник