Наследование шаблонов в 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 существенно сокращает количество кода, а также упрощает его редактирование.

Источник

Просмотров:

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