Подтвердить что ты не робот

Что эквивалентно "none" в шаблонах django?

Я хочу посмотреть, нет ли поля/переменной в шаблоне Django. Каков правильный синтаксис для этого?

Это то, что у меня есть:

{% if profile.user.first_name is null %}
  <p> -- </p>
{% elif %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}

В приведенном выше примере, что бы я использовал для замены "null"?

4b9b3361

Ответ 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 %}