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 태그를 사용하기 위해서 위와같은 방법으로 구현하였습니다.