0Pricing
Python Academy · Урок

Шаблоны с Jinja2

Формируйте динамический HTML

«Шаблоны с Jinja2» — бесплатный урок Python Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Зачем нужны шаблоны

Быстрое формирование HTML из строк Python становится неудобным. Шаблоны хранят HTML в отдельных файлах и подставляют данные во время отображения. Flask использует движок Jinja2.

from flask import Flask, render_template
app = Flask(__name__)
# render_template loads a file from the templates/ folder
print('Jinja2 powers Flask templates')

Папка templates

Flask ищет шаблоны в папке с именем templates/, расположенной рядом с приложением. Имена файлов обычно заканчиваются на .html.

# project/
#   app.py
#   templates/
#     index.html
print('Templates live in templates/')

render_template

render_template('index.html') загружает шаблон и возвращает сформированный HTML в качестве ответа.

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html')
print('home renders index.html')

Передача данных

Передавайте переменные как именованные аргументы. После этого шаблон сможет их отобразить.

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name='Alice')
print('name=Alice is sent to the template')

Вывод переменных

В шаблоне {{ name }} выводит переменную. Двойные фигурные скобки — это синтаксис выражений Jinja2.

# index.html
# <h1>Hello, {{ name }}!</h1>
print('Double braces output a value')

Условные операторы

Управляющие конструкции Jinja2 используют {% %}. Блок if показывает содержимое только при выполнении условия.

# {% if user %}
#   <p>Welcome back!</p>
# {% else %}
#   <p>Please log in.</p>
# {% endif %}
print('{% if %} branches the markup')

Циклы for

Перебирайте список с помощью {% for item in items %}, чтобы выводить повторяющуюся разметку, например список товаров.

# <ul>
# {% for item in items %}
#   <li>{{ item }}</li>
# {% endfor %}
# </ul>
print('{% for %} repeats markup per item')

Фильтры

Фильтры преобразуют значение с помощью вертикальной черты: {{ name|upper }} переводит его в верхний регистр. Встроенные фильтры включают length, default и title.

# {{ name|upper }}        -> ALICE
# {{ items|length }}      -> count
# {{ bio|default('N/A') }}
print('Filters transform values with |')

Наследование шаблонов

Базовый шаблон определяет каркас страницы с заполнителями {% block %}. Дочерние шаблоны используют {% extends %} и заполняют эти блоки.

# base.html
# <body>{% block content %}{% endblock %}</body>
#
# page.html
# {% extends 'base.html' %}
# {% block content %}<p>Hi</p>{% endblock %}
print('extends + block share a layout')

Автоматическое экранирование

Jinja2 автоматически экранирует HTML в переменных, защищая от межсайтового скриптинга. Значение вроде <script> отображается как текст, а не выполняется.

# If name = '<b>x</b>', {{ name }} renders the literal text
# Auto-escaping is on by default for safety
print('Auto-escaping prevents XSS')

Связывание с url_for

В шаблонах по-прежнему можно вызывать url_for, часто для статических файлов: {{ url_for('static', filename='style.css') }}.

# <link rel='stylesheet'
#   href="{{ url_for('static', filename='style.css') }}">
print('url_for works inside templates too')

Проверка

Проверьте свои знания о Jinja2.

Повторение

Вы научились работать с шаблонами Jinja2.

  • render_template() отображает файлы из templates/
  • {{ }} выводит значения, а {% %} выполняет if/for
  • Фильтры вроде |upper преобразуют значения
  • extends + block обеспечивают наследование структуры
  • Автоматическое экранирование защищает от XSS

Часто задаваемые вопросы

Урок «Шаблоны с Jinja2» бесплатный?

Да — полный текст урока «Шаблоны с Jinja2» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Шаблоны с Jinja2»?

Формируйте динамический HTML Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Шаблоны с Jinja2»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Маршруты и представления
  2. Шаблоны с Jinja2
  3. Формы и данные запросов
  4. Создание REST-конечной точки
← Назад к Python Academy