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

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

Наследование шаблонов в Jinja — это мощная функция, которая уменьшает дублирование кода и улучшает его организацию . Мы определяем базовый шаблон, от которого мы наследуем в других файлах шаблонов. Эти файлы шаблонов перезаписывают определенные блоки базового файла шаблона. И в сегодняшней статье мы рассмотрим, как при помощи Python и шаблонов Jinja создавать наследуемую html разметку.

Перейдем к примерам. Для начала создадим файл sample.py.


from jinja2 import Environment, FileSystemLoader

# строка для подстановки
string = 'Информация о странице'

file_loader = FileSystemLoader('templates')
env = Environment(loader=file_loader)

template = env.get_template('about.html')

out = template.render(content=content)
print(out)

В коде выше мы выводим about.html, который наследуется от base.html

Базовый HTML — base.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    {% block content%}

    {% endblock %}
</body>
</html>

В base.html файл, мы объявляем два блока: title и body. Эти блоки будут заполнены определенными тегами и текстом в дочерних шаблонах.

about.html


Наследование выполняется с помощью директивы extends.
{% extends 'base.html' %}

Определяем заголовок title
{% block title%}About page{% endblock %}

начало блока контент
{% block content %}
<h1>About page</h1>
<p>
    This is about page
</p>
конец блока
{% endblock %}

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

В файле about.html файл шаблона наследуется от base.html. Он добавляет данные, относящиеся к этой странице. Мы не повторяем теги, которые одинаковы для обеих страниц, такие как текст, html и мета-теги. Теперь, каждый раз, когда возникнет необходимость редактирования общей структуры html, будет изменен только базовый шаблон.

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

Таким образом наследование шаблонов в Jinja существенно сокращает количество кода, а также упрощает его редактирование.

Источник

Статьи по теме

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Back to top button