👣 개요
'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 |