Python을 사용한 웹어플리케이션에서 직접 html 코드에 변수를 선언 사용할 경우의 방법에 대하여 알아봅니다. 어떻게 하면 가능할까요?



# Python 템플릿을 사용한 변수의 선언

일반적으로 html에 변수 선언등을 하지 않으나 간단한 목적 및 상황에 따라 변수를 html에 직접 선언할 필요도 있습니다. 만약 Python Jinja2가 사용되는 경우 아래와 같이 set 키워드를 사용합니다.

{% set 변수명 = 변수값 %}


키워드 set은 html 템플릿 파일에 직접 변수를 선언하고 페이지 내부에서 사용 가능한 키워드입니다. 이를 활용하면 python 내부가 아니어도 변수를 적용하여 사용할 수 있죠. 그럼 아래의 예제에서 자세히 알아보세요.


! set 변수선언 예제보기
아래는 서버에서 받아온 언어값에 따라 페이지의 모든 url을 동적으로 적용하기 위해서 변수 langStr을 사용하는 예제입니다. 이처럼 변수에 등록하면 일일히 수정하지 않아 매우 편리하겠죠? 이런 경우에도 사용할 수 있다는 점 알아두세요. 그럼 아래 예제를 봐주세요.
{% if lang == 'en' %}
{% set langStr = '/en' %}
{% endif %}

<a class="link" href="{{ langStr }}/?category=html">HTML&CSS</a>
<a class="link" href="{{ langStr }}/?category=js">JAVASCRIPT</a>
<a class="link" href="{{ langStr }}/?category=jquery">JQUERY</a>
<a class="link" href="{{ langStr }}/?category=php">PHP</a>

위 예제에 선언된 langStr은 서버에서 받아온 변수 lang의 값이 en인 경우 /en이라는 값을 가지게됩니다. 그렇기 때문에 모든 url 앞에 해당 주소가 추가되죠. 반복되는 작업을 변수를 활용하면 간단하게 업데이트 및 수정을 할 수 있게되죠.


! set 변수 다른 예제
이번에는 다른 예제입니다. 날짜가 1, 2, 3 처럼 한 자릿수를 가진 경우 0을 앞에 추가해서 01, 02, 03으로 변경하는 방법을 알아보려고 합니다. 이때 '0'이란 값을 변수에 저장해 출력하면 될 것입니다.


아래 코드를 봐주세요. visit.day라는 값은 날짜 값으로 1 ~ 31의 값을 가지고 있습니다. 여기서 자리수를 확인하기 위해서 length를 사용하였습니다.
{% if visit.day | length == 1%}
  {% set preDay = '0' %}
{% else %}
  {% set preDay = '' %}
{% endif %}

<span class="visitCount__date">
  {{ preDay + visit.day | string }}
</span>

이제 visit.day 값이 3인 경우 그리고 13일인 경우라면 아래처럼 출력됩니다.
03 // 3인 경우
13 // 13인 경우

이처럼 자릿수가 하나 인 경우에는 '0'을 추가해서 출력하는 간단한 예제입니다.



# 마치면서

여기까지 jinja2에서 변수를 선언하는 방법을 자세히 알아봤습니다. 일반적으로 유지보수 및 가독성등의 목적으로 html코드와 서버 코드는 가급적 분리하는 것이 좋겠습니다. 다만 위의 경우처럼 간단하고 다른 소스코드에 영향이 없는 ... 간단한 목적의 경우 쉽게 사용할 수 있는 방법입니다.