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 %}
답변
답변
{% 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을 사용하고 있습니다.