항해 99

Jinja2 템플릿 엔진

iksadnorth 2023. 8. 5. 16:23

👣 개요

'Jinja2 템플릿 엔진'이란 Python 진영에서 사용하는 템플릿 엔진으로
동적으로 생성된 데이터를 정적인 템플릿 파일과 결합해 웹 페이지를 생성하는 엔진이다.

Jinja2 템플릿은 보안적으로도 우수하다.
HTML 이스케이프를 자동으로 수행해 XSS 공격에 대해 대처할 수 있다.

 

👣 문법

1. 변수 삽입 - {{  }}
Flask에서 변수를 전달하면 해당 부분에 치환된다.

<span> 제 이름은 {{ name }} 입니다. </span>
<span> 제 이름은 iksadnorth 입니다. </span>

 

2. 필터 - |
Flask 내에 정의된 예약어들을 이용해서 변수를 가공해서 전달한다.

<span> 제 이름은 {{ name | upper }} 입니다. </span>
<span> 제 취미는 {{ habit | capitalize }} 입니다. </span>
<span> 제 이름은 IKSADNORTH 입니다. </span>
<span> 제 취미는 Programming 입니다. </span>

 

3. 조건문 - {% if ... %}

<span> 저는 한국 사람입니다.  </span>
<span> 
    {% if location == '한국' %}
    한국인
    {% else %}
    외국인
    {% endif %}
    입니다.  
</span>
<span> 저는 한국 사람입니다.  </span>
<span> 
    한국인입니다.  
</span>

 

4. 반복문 - {% for ... %}

<span> 홈플러스에서 </span>
<span> 
    {% for item in bucket %}
        {{ item }}, 
    {% endfor %}
    샀음. ㅇㅇ
</span>
<span> 홈플러스에서 </span>
<span> 
    사과, 바나나, 수박, 샀음. ㅇㅇ
</span>

 

5. 템플릿 상속 - {% extends "fragment.html" %}

<!-- intro.html -->
<span> 제 이름은 IKSADNORTH 입니다. </span>
<span> 제 취미는 Programming 입니다. </span>

<!-- greeting.html -->
<span> 반갑습니다!! </span>

<!-- index.html -->
{% extends "intro.html" %}
{% extends "greeting.html" %}
<!-- index.html -->
<span> 제 이름은 IKSADNORTH 입니다. </span>
<span> 제 취미는 Programming 입니다. </span>
<span> 반갑습니다!! </span>

 

6. 템플릿 오버라이딩 - {% block ... %}
템플릿 상속 시, 내부 내용을 오버라이딩할 수 있어서 재사용성을 크게 높임.

<!-- base.html -->
<div>
    {% block content %}
    <!-- 기본 내용이 없는 경우를 위해 블록을 비워두기도 합니다 -->
    {% endblock %}
</div>


<!-- index.html -->
{% extends "base.html" %}

{% block content %}
    <p>이거 Thymeleaf보다 좋은 거 같은데..</p>
{% endblock %}
<!-- index.html -->
<div>
    <p>이거 Thymeleaf보다 좋은 거 같은데...</p>
</div>

 

'항해 99' 카테고리의 다른 글

Pymongo 사용법  (0) 2023.08.06
Web Scraping  (0) 2023.08.05
Flask 맛보기  (0) 2023.08.05
mongo Atlas  (0) 2023.08.04
Github Pages 배포  (0) 2023.08.03