>  기사  >  백엔드 개발  >  Django의 템플릿 엔진과 Flask의 Jinja2에 대해 자세히 알아보세요.

Django의 템플릿 엔진과 Flask의 Jinja2에 대해 자세히 알아보세요.

PHPz
PHPz원래의
2023-09-28 11:39:291409검색

Django의 템플릿 엔진과 Flask의 Jinja2에 대해 자세히 알아보세요.

Django의 템플릿 엔진과 Flask의 Jinja2에 대한 심층적인 이해, 구체적인 코드 예제가 필요합니다.

소개:
Django와 Flask는 Python에서 일반적으로 사용되고 널리 사용되는 두 가지 웹 프레임워크입니다. 둘 다 동적 웹 페이지의 렌더링을 처리하는 강력한 템플릿 엔진을 제공합니다. Django는 자체 템플릿 엔진을 사용하고 Flask는 Jinja2를 사용합니다. 이 기사에서는 Django의 템플릿 엔진과 Flask의 Jinja2를 심층적으로 살펴보고 사용법과 차이점을 설명하는 몇 가지 구체적인 코드 예제를 제공합니다.

1. Django 템플릿 엔진

  1. 템플릿 생성 및 사용
    Django에서는 HTML 파일을 생성하고 그 안의 템플릿 구문을 사용하여 템플릿을 생성할 수 있습니다. 템플릿 파일은 일반적으로 응용 프로그램의 "templates" 디렉터리에 저장됩니다.
    예를 들어 아래와 같이 "hello.html"이라는 템플릿을 만들 수 있습니다.
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

보기 함수에서 데이터를 템플릿에 전달하고 render를 사용하여 렌더링할 수 있습니다. 기능 . 예를 들어 "name"이라는 변수를 템플릿에 전달할 수 있습니다. render函数将数据传递给模板并进行渲染。例如,我们可以传递一个名为“name”的变量给模板:

from django.shortcuts import render

def hello(request):
    name = "John"
    return render(request, 'hello.html', {'name': name})
  1. 模板语法
    Django的模板引擎提供了丰富的语法来处理逻辑和数据展示。下面是一些常用的模板语法示例:
  • 变量:使用双花括号来包含变量名,例如{{ name }}
  • 标签:使用花括号和百分号来包含标签,例如{% for item in items %} {% endfor %}
  • 过滤器:可以在变量后面使用管道符号和过滤器来处理变量的输出,例如{{ name|title }}表示将name变量转换为首字母大写的形式。
  1. 模板继承
    Django的模板引擎还支持模板的继承。可以创建一个基础模板,然后其他模板可以继承基础模板,并可以重写和扩展基础模板的一些块。
    例如,我们可以创建一个名为“base.html”的基础模板,如下所示:
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <header>
        {% block header %}{% endblock %}
    </header>
    <div class="content">
        {% block content %}{% endblock %}
    </div>
    <footer>
        {% block footer %}{% endblock %}
    </footer>
</body>
</html>

然后,在其他模板中可以使用extends关键字来继承并扩展基础模板,如下所示:

{% extends 'base.html' %}

{% block title %}Hello{% endblock %}

{% block header %}
    <h1>Welcome to my website!</h1>
{% endblock %}

{% block content %}
    <p>Hello, {{ name }}!</p>
{% endblock %}

二、Flask的Jinja2

  1. 模板的创建和使用
    与Django类似,Flask使用Jinja2作为其模板引擎。同样,可以通过创建一个HTML文件来创建模板。
    在Flask中,模板文件通常存储在应用程序的“templates”目录下。
    例如,我们可以创建一个名为“hello.html”的模板,如下所示:
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

在视图函数中,可以使用render_template函数来渲染模板并传递数据。例如,我们可以传递一个名为“name”的变量给模板:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello():
    name = "John"
    return render_template('hello.html', name=name)
  1. 模板语法
    Jinja2的模板语法与Django的模板语法类似,但有些细微差别。下面是一些常用的模板语法示例:
  • 变量:同样使用双花括号来包含变量名,例如{{ name }}
  • 控制结构:使用花括号和百分号来包含控制结构,例如{% for item in items %} {% endfor %}
  • 过滤器:同样可以在变量后面使用管道符号和过滤器来处理变量的输出,例如{{ name|title }}表示将name变量转换为首字母大写的形式。
  1. 模板继承
    Jinja2也支持模板的继承。同样可以创建一个基础模板,其他模板可以继承并重写和扩展基础模板的一些块。
    例如,我们可以创建一个名为“base.html”的基础模板,如下所示:
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <header>
        {% block header %}{% endblock %}
    </header>
    <div class="content">
        {% block content %}{% endblock %}
    </div>
    <footer>
        {% block footer %}{% endblock %}
    </footer>
</body>
</html>

然后,在其他模板中使用extends

{% extends 'base.html' %}

{% block title %}Hello{% endblock %}

{% block header %}
    <h1>Welcome to my website!</h1>
{% endblock %}

{% block content %}
    <p>Hello, {{ name }}!</p>
{% endblock %}

    템플릿 구문

    Django의 템플릿 엔진은 논리 및 데이터 표현을 처리하기 위한 풍부한 구문을 제공합니다. 다음은 일반적으로 사용되는 템플릿 구문 예입니다.

    변수: {{ name }}와 같이 변수 이름을 묶으려면 이중 중괄호를 사용하세요.

    🎜 태그: {% for item in items %} {% endfor %}와 같은 태그를 포함하려면 중괄호와 백분율 기호를 사용하세요. 🎜🎜필터: 변수 뒤에 파이프 기호와 필터를 사용하여 변수 출력을 처리할 수 있습니다. 예를 들어 {{ name|title }}는 이름 변수를 대문자 형식으로 변환하는 것을 의미합니다. 🎜
    🎜템플릿 상속🎜Django의 템플릿 엔진은 템플릿 상속도 지원합니다. 기본 템플릿을 생성한 후 다른 템플릿이 기본 템플릿을 상속하고 기본 템플릿의 일부 블록을 재정의하고 확장할 수 있습니다. 🎜예를 들어 다음과 같이 "base.html"이라는 기본 템플릿을 만들 수 있습니다. 🎜🎜rrreee🎜그런 다음 extends 키워드를 다른 템플릿에서 사용하여 기본 템플릿을 상속하고 확장할 수 있습니다. 🎜rrreee🎜2. Flask의 Jinja2 생성 및 사용🎜🎜🎜template🎜 Django와 마찬가지로 Flask는 Jinja2를 템플릿 엔진으로 사용합니다. 마찬가지로 HTML 파일을 생성하여 템플릿을 생성할 수도 있습니다. 🎜Flask에서 템플릿 파일은 일반적으로 애플리케이션의 "templates" 디렉터리에 저장됩니다. 🎜예를 들어 아래와 같이 "hello.html"이라는 템플릿을 만들 수 있습니다. 🎜🎜rrreee🎜보기 함수에서 render_template 함수를 사용하여 템플릿을 렌더링하고 데이터를 전달할 수 있습니다. 예를 들어 "name"이라는 변수를 템플릿에 전달할 수 있습니다. 🎜rrreee
      🎜Template 구문🎜Jinja2의 템플릿 구문은 Django의 템플릿 구문과 유사하지만 몇 가지 미묘한 차이점이 있습니다. 다음은 몇 가지 일반적인 템플릿 구문 예입니다. 🎜🎜
    🎜변수: 또한 {{ name }}와 같은 변수 이름을 포함하려면 이중 중괄호를 사용하세요. 🎜🎜제어 구조: {% for item in items %} {% endfor %}와 같은 제어 구조를 포함하려면 중괄호와 백분율 기호를 사용하세요. 🎜🎜필터: 변수 뒤에 파이프 기호와 필터를 사용하여 변수 출력을 처리할 수도 있습니다. 예를 들어 {{ name|title }}는 이름 변수를 첫 글자를 대문자로 변환하는 것을 의미합니다. 🎜
    🎜템플릿 상속🎜Jinja2는 템플릿 상속도 지원합니다. 기본 템플릿을 생성하는 것도 가능하며, 다른 템플릿은 기본 템플릿의 일부 블록을 상속, 재정의 및 확장할 수 있습니다. 🎜예를 들어 아래와 같이 "base.html"이라는 기본 템플릿을 생성할 수 있습니다. 🎜🎜rrreee🎜 그런 다음 다른 템플릿에서 extends 키워드를 사용하여 기본 템플릿을 상속하고 확장합니다. 아래: 🎜rrreee🎜 결론: 🎜 Django의 템플릿 엔진과 Flask의 Jinja2는 모두 동적 웹 페이지 렌더링을 생성하는 강력한 기능을 제공합니다. 둘 사이에는 구문과 사용법에 약간의 차이가 있지만 전반적으로 매우 유사합니다. 실제 개발에서는 개인 취향이나 프로젝트 요구 사항에 따라 둘 중 하나를 선택하여 사용할 수 있습니다. 🎜🎜위 내용은 Django의 템플릿 엔진과 Flask의 Jinja2에 대한 심층적인 이해입니다. 구체적인 코드 예제를 통해 사용법과 차이점을 더욱 명확하게 이해할 수 있습니다. 이 글이 여러분이 이 두 가지 템플릿 엔진을 이해하고 사용하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 Django의 템플릿 엔진과 Flask의 Jinja2에 대해 자세히 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.