파이썬(Python)/Flask

[Python]flask와 Jinja2 사용해서 변수 출력하기 예제(Variable)

끄적끄적아무거나 2023. 8. 16. 08:36
반응형

 

목차

     

     

     

     

     

    파이썬 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 예제 코드 다운로드

     

     

    app.py
    0.00MB
    index.html
    0.00MB

     

     

     

    반응형