웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > python

Python jinja2에서 if문 사용하는 방법

Last Modified : 2018-02-08 / Created : 2017-08-16
31,220
View Count
Python에서 Jinja2 템플릿을 사용하여 표현식으로 html에 출력할 경우 if문을 사용하는 방법을 알아봅니다. 참고로 Python의 Flask 프레임워크는 Jinja2를 사용합다.



# Python에서 표현식으로 html에 if 문 사용하기

먼저 Jinja2에서 if 문을 사용하기 위해서는 아래와 같이 블록 {% %} 내부에 if를 선언하여 사용합니다. 아래는 if문법을 사용한 4가지 키워드입니다.

{% if 조건식 %}
// 조건식에 해당하는 경우 endif를 만나기 전까지의 구문을 수행함

{% elif 조건식 %}
// 위 조건이 아닌 경우 또 다른 조건을 수행함

{% else %}
// 위 조건이 아닌 경우 무조건 수행함

{% endif %}
// if 조건식을 코드실행을 끝냄

위 4가지의 문법을 사용하여 if문을 사용 서버 소스를 html에서 표현식으로 실행하게됩니다. 그럼 아래 예제를 봐주세요.



# Python if문 예제 소스보기

그럼 아래의 예제를 통해서 자세하게 알아봅니다. 만약 site = 'web'인 경우 그리고 site = 'is'인 경우 해당 text를 span태그를 사용하여 출력하는 매우 간단한 예제입니다.
{% if site == 'web' %}
  <span>web</span>
{% elif site == 'is' %}
  <span>is</span>
{% else %}
  <span>com</span>
{% endif %}

간단하게 설명하면 site의 값이 web이면 web을 출려하고 is이면 is를 출력합니다. 만약 둘 다 아니라면 com을 출력하는 매우 간단한 예제입니다.

이처럼 Python의 template엔진 Jinja2를 사용하면 html 코드에 간단하게 if문을 사용하여 출력할 수 있습니다.




# 여러개의 조건이 존재하는 경우 적용방법

만약 조건이 하나가 아닌 다수인 경우 어떻게해야할까요? 이 경우 다수의 조건식을 if문에 사용하는 방법에 대하여 알아봅니다. 아래 예제를 봐주세요.


! AND 조건인 경우 예제보기

만약 변수 isExist의 값이 True이면서 name의 값이 webisfree인 경우 아래와 같이 조건식을 적용할 수 있습니다.
{% if ((isExist == " True") and (name == "webisfree")): %}
  <span>Okay</span>
{% endif %}

이 코드를 실행하면 두 가지 조건이 모두 맞는 AND의 경우에만 "Okay" 문구가 출력되게됩니다. 그럼 둘 중 하나만 맞는 경우 실행하는 OR 조건의 예제를 알아보겠습니다.


! OR 조건인 경우 예제보기

아래는 myNum이라는 변수가 1이거나 2인 경우 하나라도 일치하면 실행하는 OR 조건으로 실행하게됩니다. 아래 코드를 봐주세요.
{% if ((myNum == 1) or (myNum == 2)): %}
  <span>Okay</span>
{% endif %}

여기까지 다수의 Condition에 따른 if문 적용방법으로 AND 조건에 이어 OR 조건으로 수행하는 방법을 알아봤습니다.

* 대소문자 유의하세요 !
참고로 대소문자를 구분하니 대문자가 아닌 소문자로 and 또는 or를 표기하시기 바랍니다.



# 마치면서

서버에서 전달받은 데이터값을 사용하여 특정 블록의 html을 출력하거나 안하는 등의 코드를 Jinja2 표현식의 if문으로 쉽게 구현할 수 있습니다. 이런 코드는 많이 사용되며 설정된 언어값에 따라 다른 텍스트 등을 보여주어야할때도 요긴하게 사용됩니다.

실제 webisfree의 경우 페이지에 따라 각기 다른 meta 태그를 사용하기 위해서 위와같은 방법으로 구현하였습니다.

Previous

python의 jinja2에서 for문 index값 얻는 방법

Previous

Python flask 여러개의 파일 동시 업로드 방법