장고에서 변환하면 다음과 같은 작업에 익숙합니다.
{% if not var1 %} {% endif %}
var1을 컨텍스트에 넣지 않으면 작동합니다. Jinja2는 정의되지 않은 오류를 발생시킵니다. 말 {% if var1 == None %}
하거나 비슷한 쉬운 방법이 있습니까?
답변
Jinja2 템플릿 디자이너 문서에서 :
{% if variable is defined %}
value of variable: {{ variable }}
{% else %}
variable is not defined
{% endif %}
답변
{% if variable is defined %}
변수가 인 경우 true입니다 None
.
not is None
허용되지 않기 때문에
{% if variable != None %}
정말 유일한 옵션입니다.
답변
jinja2 템플릿에서 다음과 같이 변수를 정의 할 수도 있습니다.
{% if step is not defined %}
{% set step = 1 %}
{% endif %}
그런 다음 다음과 같이 사용할 수 있습니다.
{% if step == 1 %}
<div class="col-xs-3 bs-wizard-step active">
{% elif step > 1 %}
<div class="col-xs-3 bs-wizard-step complete">
{% else %}
<div class="col-xs-3 bs-wizard-step disabled">
{% endif %}
그렇지 않으면 (사용하지 않으면 {% set step = 1 %}
) 상위 코드가 발생합니다.
UndefinedError: 'step' is undefined
답변
환경 설정에는 undefined = StrictUndefined
정의되지 않은 값이 설정되지 않도록하는 기능이 있습니다. 이것은 그것을 고쳤다 :
from jinja2 import Undefined
JINJA2_ENVIRONMENT_OPTIONS = { 'undefined' : Undefined }
답변
필요한 경우 기본 필터 사용을 고려하십시오. 예를 들면 다음과 같습니다.
{% set host = jabber.host | default(default.host) -%}
또는 다음과 같이 “하드 코딩”된 하나 이상의 폴백 값을 사용하십시오.
{% set connectTimeout = config.stackowerflow.connect.timeout | default(config.stackowerflow.timeout) | default(config.timeout) | default(42) -%}
답변
{% if variable is defined %}
정의되지 않은 것을 확인하기 위해 작동합니다.
{% if not var1 %}
변수를 False로 기본 설정하면 사용 하지 않아도됩니다.
class MainHandler(BaseHandler):
def get(self):
var1 = self.request.get('var1', False)