목차
파이썬 Jinja2란?
Jinja2는 파이썬 기반의 템플릿 엔진입니다. 템플릿 엔진은 웹 애플리케이션에서 동적으로 생성되는 HTML, XML, JSON 등의 문서를 만들기 위해 사용됩니다. Jinja2는 템플릿과 데이터를 결합하여 동적인 컨텐츠를 생성하고 출력하는 작업을 간편하게 할 수 있도록 도와줍니다.
언제 Jinja2를 사용할까요?
1. 분리된 로직과 디자인: Jinja2를 사용하면 프로그래밍 로직과 디자인(템플릿)을 분리할 수 있습니다. 이로써 개발자와 디자이너가 서로 독립적으로 작업할 수 있으며, 디자인의 변경이 로직에 영향을 미치지 않습니다.
2. 동적 컨텐츠 생성: Jinja2를 사용하면 웹 페이지에 동적으로 데이터를 삽입할 수 있습니다. 예를 들어, 사용자 이름, 프로필 정보, 뉴스 항목 등을 동적으로 생성하여 보여줄 수 있습니다.
3. 코드 재사용: 템플릿은 반복되는 HTML 코드를 효율적으로 재사용할 수 있도록 도와줍니다. 템플릿 내에서 반복문과 조건문을 사용하여 일관된 형식으로 컨텐츠를 생성할 수 있습니다.
4. 보안: Jinja2는 기본적으로 XSS(Cross-Site Scripting) 공격을 방지하기 위해 안전한 HTML 출력을 생성합니다. 사용자 입력을 이용해 생성되는 컨텐츠를 처리할 때 보안에 도움이 됩니다.
5. 확장 가능: Jinja2는 확장 가능한 템플릿 문법을 제공하여 필요에 따라 사용자 지정 템플릿 태그나 필터를 만들 수 있습니다.
Jinja2는 다양한 웹 프레임워크에서 사용되며, 특히 Flask와 함께 많이 사용됩니다. Flask는 Jinja2를 내장하여 기본 템플릿 엔진으로 사용하며, 웹 애플리케이션 개발 시 효율적인 템플릿 작업을 지원합니다. Jinja2의 강력한 템플릿 문법과 기능을 활용하면 웹 애플리케이션의 디자인과 동적인 컨텐츠 생성을 효과적으로 관리할 수 있습니다.
파이썬 Jinja2 예제 코드 실습 및 주석
예제 코드- app.py>>
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
# 변수를 설정하고 HTML 템플릿으로 전달
user_name = "John"
age = 25
hobbies = ["Reading", "Gaming", "Cooking"]
return render_template('index.html', name=user_name, age=age, hobbies=hobbies)
if __name__ == '__main__':
app.run(debug=True)
user_name, age, hobbies 변수의 값을 백엔드(Backend)에서 생성하고 이를 render_template를 사용해서 html에 전달합니다. 그러면 프론트엔드(Frontend)에서 변수를 사용할 수 있게 됩니다.
예제 코드 - index.html>>
<!DOCTYPE html>
<html>
<head>
<title>Flask Jinja2 Example</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
<p>Your age is {{ age }}.</p>
<h2>Hobbies:</h2>
<ul>
{% for hobby in hobbies %}
<li>{{ hobby }}</li>
{% endfor %}
</ul>
</body>
</html>
jinja2 문법은 간단하게 변수는 괄호 {{ }}에 표기하고 조건문은 {% %}에 표기 합니다.
html 내에서 backend에서 받은 변수 값을 jinja2를 사용해서 출력 합니다.
결과>>
파이썬 Jinja2 예제 코드 다운로드
'파이썬(Python) > Flask' 카테고리의 다른 글
[Python]vue, axios란? 간단한 console 출력 예제 실습으로 이해하기(flask, 파이썬, log) (0) | 2023.08.18 |
---|---|
[Python] flask Jinja2 for문, if문, 리스트 출력 예제 실습 및 풀이 (0) | 2023.08.17 |
[HTTP]GET과 POST차이, 장단점, flask로 예제 실습(Python) (0) | 2023.08.11 |
[Python] flask 간단한 REST API 구현하기(GET, 인자전달, Frontend, Backend) (0) | 2023.08.10 |
[Python] Flask로 파일 업로드 웹페이지 만들기(werkzeug, files, upload) (6) | 2021.11.27 |