[jinja2] 오브젝트가 기본값을 설정하지 않은 경우 Jinja2 템플리트 변수

jijna2에서 변수를 만드는 방법 대신 객체가 None 인 경우 기본적으로 “”로 설정하는 방법은 무엇입니까?

      {% if p %}
        {{ p.User['first_name']}}
      {% else %}
        NONE
      {%endif %}

따라서 객체 p가 None이면 p (first_name 및 last_name)의 값을 “”로 기본값으로 설정하고 싶습니다. 원래

nvl(p.User[first_name'], "")

수신 오류 :

Error:  jinja2.exceptions.UndefinedError
    UndefinedError: 'None' has no attribute 'User'



답변

none내장 함수를 사용하십시오 ( http://jinja.pocoo.org/docs/templates/#none ).

{% if p is not none %}
    {{ p.User['first_name'] }}
{% else %}
    NONE
{%endif %}

또는

{{ p.User['first_name'] if p != None else 'NONE' }}

또는 빈 문자열이 필요한 경우 :

{{ p.User['first_name'] if p != None }}


답변

{{p.User['first_name'] or 'My default string'}}


답변

문서 에 따르면 다음과 같이 할 수 있습니다.

{{ p|default('', true) }}

원인 None에 캐스트 False부울 맥락에서.


업데이트 : lindes가 언급했듯이 간단한 데이터 유형에만 작동합니다.


답변

다른 답변 외에도 variable이 None 인 경우 다른 것을 작성할 수 있습니다.

{{ variable or '' }}


답변

이 문서따르면 다음과 같이 할 수 있습니다.

{{ p.User['first_name']|default('NONE') }}


답변

“p”또는 “p.User”가 None 인 동안 예외가 발생하지 않도록하려면 다음을 사용할 수 있습니다.

{{ (p and p.User and p.User['first_name']) or "default_value" }}


답변

다른 솔루션으로 (이전 솔루션과 유사한 종류) :

{{ ( p is defined and p.User is defined and p.User['first_name'] ) |default("NONE", True) }}

마지막 변수 (p.User [ ‘first_name’])는 그 if defined이후 에 테스트를 하지 않습니다 .