[python] django 템플릿에서 “none”에 해당하는 것은 무엇입니까?

Django 템플릿 내에서 필드 / 변수가 없는지 확인하고 싶습니다. 이에 대한 올바른 구문은 무엇입니까?

이것이 내가 현재 가지고있는 것입니다.

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

위의 예에서 “null”을 대체하려면 무엇을 사용해야합니까?



답변

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:"--" }}


답변

is연산자 : Django 1.10의 새로운 기능

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


답변

yesno 도우미 좀 봐

예 :

{{ myValue|yesno:"itwasTrue,itWasFalse,itWasNone" }}


답변

{% if profile.user.first_name %}작동합니다 (또한 수락하고 싶지 않다고 가정 '').

if파이썬에서 일반적인 치료에 None, False, '', [], {}, … 모든 거짓있다.


답변

기본 제공 템플릿 필터를 사용할 수도 있습니다 default.

값이 False로 평가되면 (예 : None, 빈 문자열, 0, False); 기본 “-“이 표시됩니다.

{{ profile.user.first_name|default:"--" }}

문서 :
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default


답변

이것을 시도해 볼 수 있습니다.

{% if not profile.user.first_name.value %}
  <p> -- </p>
{% else %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif %}

이런 식으로 기본적으로 양식 필드에 first_name연관된 값이 있는지 확인 합니다. 보기 {{ field.value }}장고 문서에서 폼의 필드를 통해 반복 .

Django 3.0을 사용하고 있습니다.