Flask – мощный и гибкий микрофреймворк для создания веб-приложений на Python. Для работы с динамическим контентом и генерации HTML-страниц Flask использует шаблонизатор Jinja2. В данной статье мы познакомимся с основными возможностями Jinja2 и научимся применять их в своих проектах на Flask.
Настройка окружения Jinja2
Для начала работы с Jinja2 во Flask, необходимо создать каталог «templates» в корневой директории проекта. В этом каталоге будут храниться все шаблоны приложения. Flask автоматически определит и настроит окружение Jinja2 при его импорте:
from flask import Flask, render_template
app = Flask(__name__)
Создание и использование базовых шаблонов
Базовый шаблон позволяет избежать дублирования кода и упрощает поддержку проекта. Создадим файл «base.html» в каталоге «templates» с примером базового шаблона:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}Основной заголовок{% endblock %}</title>
</head>
<body>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
Здесь мы определили два блока: ‘title’ и ‘content’, которые будут переопределены в дочерних шаблонах.
Создание дочерних шаблонов
Дочерние шаблоны наследуются от базового и переопределяют его блоки. Создадим файл «index.html» в каталоге «templates»:
{% extends "base.html" %}
{% block title %}Главная страница{% endblock %}
{% block content %}
<h1>Добро пожаловать на наш сайт!</h1>
{% endblock %}
Здесь мы наследуемся от «base.html» и переопределяем блоки ‘title’ и ‘content’.
Отображение шаблонов во Flask
Для отображения шаблонов используется функция render_template. Вернем наш дочерний шаблон «index.html» в качестве главной страницы:
@app.route('/')
def index():
return render_template('index.html')