programing

장고 템플릿의 "none"에 해당하는 것은 무엇입니까?

bestprogram 2023. 9. 9. 09:45

장고 템플릿의 "none"에 해당하는 것은 무엇입니까?

장고 템플릿 내에 필드/변수가 없는지 확인하고 싶습니다.그것에 대한 정확한 구문은 무엇입니까?

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

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

내장 템플릿 필터를 사용할 수도 있습니다.default:

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

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

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

is오퍼레이터 : New in Django 1.10

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

예스노 헬퍼를 보세요.

예:

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

{% if profile.user.first_name %}works(사용자가 수락하지 않을 경우)'').

if일반적으로 파이썬에서None,False,'',[],{}, ... 모두 거짓입니다.

다음과 같은 분야에 대한 검증이 필요한 경우nullvalue, 확인 후 아래와 같이 처리할 수 있습니다.

{% for field in form.visible_fields %}
    {% if field.name == 'some_field' %}
        {% if field.value is Null %}
            {{ 'No data found' }}
        {% else %}
            {{ field }}
        {% endif %}
    {% endif %}
{% endfor %}

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

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

이렇게 하면 기본적으로 양식 필드가first_name연관된 모든 가치를 가지고 있어요{{ field.value }}장고 문서의 양식 필드에 루프를 적용합니다.

장고 3.0을 쓰고 있습니다.

이전 답변에 대한 참고 사항: 문자열을 표시하려면 모든 것이 옳지만 숫자를 표시하려면 주의해야 합니다.

특히 0의 값을 가질 때bool(0)에 평가합니다.False표시되지 않으며 원하는 대로 표시되지 않을 수도 있습니다.

이 경우 사용이 더 좋습니다.

{% if profile.user.credit != None %}

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