반응형
Jinja2에서 변수가 정의되어 있지 않은지 어떻게 테스트합니까?
장고에서 변환하면 다음과 같은 작업에 익숙합니다.
{% 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 %}
정말 유일한 옵션입니다.
환경 설정에는 undefined = StrictUndefined
정의되지 않은 값이 설정되지 않도록하는 기능이 있습니다. 이것은 그것을 고쳤다 :
from jinja2 import Undefined
JINJA2_ENVIRONMENT_OPTIONS = { 'undefined' : Undefined }
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
필요한 경우 기본 필터 사용을 고려하십시오. 예를 들면 다음과 같습니다.
{% 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)
참고 URL : https://stackoverflow.com/questions/3842690/in-jinja2-how-do-you-test-if-a-variable-is-undefined
반응형
'programing tip' 카테고리의 다른 글
로컬 함수 vs Lambda C # 7.0 (0) | 2020.06.03 |
---|---|
"foo"를 포함하는 속성을 선택하기위한 올바른 XPath는 무엇입니까? (0) | 2020.06.03 |
다양한 언어로 코드의 구문 강조를 수행하는 LaTeX 패키지 (0) | 2020.06.03 |
장고 휴식 프레임 워크, 동일한 ModelViewSet에서 다른 직렬 변환기 사용 (0) | 2020.06.03 |
출력에서 개행을 수행하는 방법 (0) | 2020.06.03 |