Jinja2 속기 조건부


180

내가 이것을 가지고 있다고 가정 해보십시오.

{% if files %}
    Update
{% else %}
    Continue
{% endif %}

PHP에서는 다음과 같은 속기 조건을 작성할 수 있습니다.

<?php echo $foo ? 'yes' : 'no'; ?>

그렇다면 jinja2 템플릿에서 작동하도록 이것을 변환 할 수있는 방법이 있습니까?

'yes' if foo else 'no'

이것이 도움이되는지 모르겠지만 PHP 식은 C 형 언어의 "삼항 연산자"와 매우 비슷합니다. 파이썬에서는 마지막 줄을 "조건부 표현식"이라고 부르지 만, 파이썬에서는 삼항 연산자라고도합니다. 어쨌든 구글 검색에서 그 이름을 아는 데 도움이 될 수 있으므로 언급했습니다.
mgilson

답변:


350

예, 인라인 if-expressions 를 사용할 수 있습니다 .

{{ 'Update' if files else 'Continue' }}

74
에 대한 속기 {{ value if value else 'No value' }}{{ value or 'No value' }}
돈 Grem

11
@DorinGrecu 내 코드는 {{ tobe or 'Not to be' }}당신 에게 감사로 가득하지 않습니다 :)
dcohenb

14
변수를 사용해야 할 경우 내부 {% %}도 사용할 수 있습니다 . 처럼{% set your_var = 'Update' if files else 'Continue' %}
jhpg

1
@dcohenb는 별도의 질문으로 문의하십시오. ;)
deed02392

3

다른 방법으로 (하지만 파이썬 스타일이 아닙니다. JS 스타일입니다)

{{ files and 'Update' or 'Continue' }}

1
이 구문은 빈 문자열을 거짓으로 해석하는 언어에는 실제로 적용 할 수 없습니다. 의도하지 않은로 True and '' or 'a'평가됩니다 a.
가브리엘 Jablonski

그러나 python3은 빈 문자열을로 해석합니다 False. 따라서 '' or 'a'파이썬 을 작성 하면 대답 'a'합니다. 따라서 귀하의 의견은 Ruby와 관련이있을 수 있습니다.
user3713526
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.