Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Дневник студента

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

Время чтения статьи ~1 минута
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Наследование в шаблонизаторе 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 — это одна из тех функций, которая действительно может сэкономить ваше время и усилить удобство работы с шаблонизатором. Я очень рекомендую ее использовать при разработке ваших проектов. Спасибо за чтение!

Аватар пользователя Артем Иноземцев
Артем Иноземцев 13 марта 2023
1
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря