developer tip

django 템플릿에서 "none"에 해당하는 것은 무엇입니까?

copycodes 2020. 10. 16. 07:33
반응형

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

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


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

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

이 'if'를 수행 할 필요가 없습니다. {{ profile.user.get_full_name }}

참고 URL : https://stackoverflow.com/questions/11945321/what-is-the-equivalent-of-none-in-django-templates

반응형