Jinja2 템플리트를 변수를 설정할 수 없으면 객체에는 기본값입니다

기본적으로 &quot jijna2 만드는 방법을 변수로 "; 만약 이런 일을 대신 객체인지 없음?

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

만일 내가 원하는 값을 기본값으로 객체에는 되니그들 p 는 p (first_name 및 last_name 님) 를 &quot ";). 기본적으로 노블 (퍼시우저 [first_name& # 39,], &quot ";)

받는 중 오류가 발생했습니다. 오류: jinja2.exceptions.UndefinedError 우네핀더로: # 39, & # 39 None&. # 39, & # 39 주님으로부터그에게 속성용 User&.

질문에 대한 의견 (3)
해결책

내장 함수를 사용하여 '없음' (http://jinja.pocoo.org/docs/templates/ # 없음).

{% 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 }}
해설 (1)
{{p.User['first_name'] or 'My default string'}}
해설 (1)

그냥 따르면 [docs] [1] 할 수 있습니다.

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

이로 인해 '없음' 을 '거짓' 의 방송 부울입니다 컨텍스트입니다.

  • 업데이트 *: 앞에서 언급한 것처럼 린데 대해서만 작동하잖아 단순한 데이터 유형.

[1]: http://jinja.pocoo.org/docs/dev/templates/ # 기본

해설 (1)

또 다른 답변을 한 것으로, 다음과 같은 경우 되니그들 가변입니다 무언가 쓸 수 있습니다.

{{ variable or '' }}
해설 (1)

다음과 같은 [이 doc] (http://jinja.pocoo.org/docs/templates/ # 내장 필터링합니다.) 이 이쪽요 할 수 있습니다.

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

한 동안 것을 피하기 위해 idfsysobject. &quot p"; 또는 &quot p.User"; 없음 (none) 으로 사용할 수 있습니다.

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

또 다른 예를 솔루션 (사람이었는가부텀 일부 이전 비슷한 수준들과): "' {{(p 정의되고, p. 사용자 정의 및 p. 사용자 [# 39, & # 39 first_name&;] 기본 (,, 참 &quot none&quot)}}) "'

참고 마지막 변수 (퍼시우저 [# 39, & # 39 first_name&,]) 테스트 후 '정의' 가 없는 경우.

해설 (0)

난 보통 정의하는 '및' 글로벌 '와' 필터링합니다 노블 '기능을 넣어'.

def nvl(*args):
    for item in args:
        if item is not None:
            return item
    return None

app.jinja_env.globals['nvl'] = nvl
app.jinja_env.filters['nvl'] = nvl

사용 템플리트를:

<span>Welcome {{ nvl(person.nick, person.name, 'Anonymous') }}<span>

// or 

<span>Welcome {{ person.nick | nvl(person.name, 'Anonymous') }}<span>
해설 (0)

그냥 vmware. 안시블 2.8, 사용할 수 있습니다.

"' {{p. 사용자 [# 39, & # 39 first_name&;] }} "'

값이 정의되지 않은 진자 참조 https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html

해설 (0)