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


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

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

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

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

7 62

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

вам не нужно делать это "если", используйте:{{ profile.user.get_full_name }}

isоператор: новый в Django 1.10

{% if somevar is None %}
  This appears if somevar is None, or if somevar is not found in the context.
{% endif %}