Наследование в шаблонизаторе Jinja

Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Читать в полной версии →

Привет, мои дорогие читатели! Сегодня я хочу рассказать вам об одной из самых важных функций шаблонизатора Jinja 2 — наследование. Я использовал эту функцию в своем последнем проекте и был поражен тем, насколько просто и удобно ее использовать.

Когда я начал работать над своим проектом, я столкнулся с необходимостью создания множества страниц с одинаковым дизайном и функционалом. Я понимал, что каждую страницу нужно создавать отдельно, но это было бы очень трудоемко и неэффективно. В этот момент я вспомнил о наследовании в Jinja 2.

Наследование позволяет создавать базовый шаблон и затем расширять его, добавляя уникальный контент на каждой странице. В Jinja 2 это реализуется с помощью ключевых слов {% extends %} и {% block %}.

Пример кода:

{% extends "base.html" %}

{% block content %}
  <p>This is unique content for this page.</p>
{% endblock %}

Первое ключевое слово ({% extends %}) используется в шаблоне-наследнике, чтобы указать, какой шаблон будет использоваться в качестве базового. Второе ключевое слово ({% block %}) используется в базовом шаблоне, чтобы указать, где именно нужно добавить контент.

Пример кода:

<!DOCTYPE html>
<html>
<head>
  <title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
  <header>
    {% block header %}
      <nav>
        <ul>
          <li><a href="/">Home</a></li>
          <li><a href="/about">About</a></li>
          <li><a href="/contact">Contact</a></li>
        </ul>
      </nav>
    {% endblock %}
  </header>

  <main>
    {% block content %}{% endblock %}
  </main>

  <footer>
    {% block footer %}
      <p>&copy; 2023 My Website</p>
    {% endblock %}
  </footer>
</body>
</html>

Просто, не правда ли? Но это только начало! Jinja 2 позволяет наследовать не только один шаблон, но и несколько, что делает эту функцию еще более гибкой. Кроме того, можно наследовать только определенные блоки из базового шаблона, а не весь шаблон целиком.

Я использовал наследование в своем проекте и был впечатлен его простотой и удобством. Я смог создать базовый шаблон, определить в нем общие блоки контента и затем создавать новые страницы, расширяя базовый шаблон только необходимыми блоками.

Это очень сократило время на разработку проекта, а также сделало его более удобным в обслуживании. Все благодаря функции наследования в Jinja 2.

В заключение я бы хотел сказать, что наследование в Jinja 2 — это одна из тех функций, которая действительно может сэкономить ваше время и усилить удобство работы с шаблонизатором. Я очень рекомендую ее использовать при разработке ваших проектов. Спасибо за чтение!