Перейти к содержанию

Шаблоны

Шаблоны используются для отрисовки HTML-контента, сгенерированного из набора контекстных данных. InfraVision предоставляет набор встроенных шаблонов, подходящих для использования в представлениях плагинов. Авторы плагинов могут расширять эти шаблоны, чтобы минимизировать работу, необходимую для создания пользовательских шаблонов, одновременно гарантируя, что создаваемый ими контент соответствует макету и стилю InfraVision. Все эти шаблоны написаны на языке шаблонов Django (DTL).

Структура файлов шаблонов

Шаблоны плагинов должны находиться по пути templates/<plugin-name>/ внутри корня плагина. Например, если имя вашего плагина my_plugin и вы создаёте шаблон с именем foo.html, он должен быть сохранён в templates/my_plugin/foo.html. (Конечно, вы также можете использовать подкаталоги ниже этой точки.) Это гарантирует, что движок шаблонов Django сможет найти шаблон для отрисовки.

Стандартные блоки

Следующие блоки шаблонов доступны во всех шаблонах.

Имя Обязателен Описание
title Да Заголовок страницы
content Да Содержимое страницы
head - Контент для включения в HTML-элемент <head>
footer - Содержимое футера страницы
footer_links - Раздел ссылок в футере страницы
javascript - JavaScript-контент, включаемый в конце HTML-элемента <body>

Примечание

Для получения дополнительной информации о том, как работают блоки шаблонов, обратитесь к документации Django.

Базовые шаблоны

layout.html

Путь: base/layout.html

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

Блоки

Имя Обязателен Описание
header - Заголовок страницы
tabs - Горизонтальные вкладки навигации
modals - Модальные элементы Bootstrap 5

Пример

Ниже приведён пример шаблона плагина, который расширяет layout.html.

{% extends 'base/layout.html' %}

{% block header %}
  <h1>My Custom Header</h1>
{% endblock header %}

{% block content %}
  <p>{{ some_plugin_context_var }}</p>
{% endblock content %}

Первая строка шаблона указывает Django расширить базовый шаблон InfraVision, а секции block внедряют наш пользовательский контент в его блоки header и content.

Примечание

Django отрисовывает шаблоны со своим собственным языком шаблонов. Он очень похож на Jinja2, однако есть некоторые важные отличия, о которых авторам следует знать. Обязательно ознакомьтесь с языком шаблонов Django, прежде чем пытаться создавать новые шаблоны.

Шаблоны общих представлений

object.html

Путь: generic/object.html

Этот шаблон используется общим представлением ObjectView для отображения одного объекта.

Блоки

Имя Обязателен Описание
breadcrumbs - Элементы списка хлебных крошек (HTML-элементы <li>)
object_identifier - Уникальный идентификатор (строка) для объекта
extra_controls - Дополнительные кнопки действий для отображения

Контекст

Имя Обязателен Описание
object Да Экземпляр просматриваемого объекта

object_edit.html

Путь: generic/object_edit.html

Этот шаблон используется общим представлением ObjectEditView для создания или изменения одного объекта.

Блоки

Имя Обязателен Описание
form - Пользовательский контент формы (внутри HTML-элемента <form>)
buttons - Кнопки отправки формы

Контекст

Имя Обязателен Описание
object Да Экземпляр изменяемого объекта (или none, если создаётся)
form Да Класс формы для создания/изменения объекта
return_url Да URL, на который перенаправляется пользователь после отправки формы

object_delete.html

Путь: generic/object_delete.html

Этот шаблон используется общим представлением ObjectDeleteView для удаления одного объекта.

Блоки

Нет

Контекст

Имя Обязателен Описание
object Да Экземпляр удаляемого объекта
form Да Класс формы для подтверждения удаления объекта
return_url Да URL, на который перенаправляется пользователь после отправки формы

object_list.html

Путь: generic/object_list.html

Этот шаблон используется общим представлением ObjectListView для отображения фильтруемого списка нескольких объектов.

Блоки

Имя Обязателен Описание
extra_controls - Дополнительные кнопки действий
bulk_buttons - Дополнительные кнопки массовых действий для отображения под списком

Контекст

Имя Обязателен Описание
model Да Класс объекта
table Да Класс таблицы, используемый для отрисовки списка объектов
permissions Да Сопоставление разрешений добавления, изменения и удаления для текущего пользователя
actions Да Список кнопок для отображения (add, import, export, bulk_edit и/или bulk_delete)
filter_form - Связанная форма набора фильтров для фильтрации списка объектов
return_url - URL возврата для передачи при отправке формы массовой операции

bulk_import.html

Путь: generic/bulk_import.html

Этот шаблон используется общим представлением BulkImportView для импорта нескольких объектов одновременно из CSV-данных.

Блоки

Нет

Контекст

Имя Обязателен Описание
model Да Класс объекта
form Да Класс формы импорта CSV
return_url - URL возврата для передачи при отправке формы массовой операции
fields - Словарь полей формы для отображения параметров импорта

bulk_edit.html

Путь: generic/bulk_edit.html

Этот шаблон используется общим представлением BulkEditView для одновременного изменения нескольких объектов.

Блоки

Нет

Контекст

Имя Обязателен Описание
model Да Класс объекта
form Да Класс формы массового редактирования
table Да Класс таблицы, используемый для отрисовки списка объектов
return_url Да URL, на который перенаправляется пользователь после отправки формы

bulk_delete.html

Путь: generic/bulk_delete.html

Этот шаблон используется общим представлением BulkDeleteView для одновременного удаления нескольких объектов.

Блоки

Имя Обязателен Описание
message_extra - Дополнительный контент предупреждающего сообщения

Контекст

Имя Обязателен Описание
model Да Класс объекта
form Да Класс формы массового удаления
table Да Класс таблицы, используемый для отрисовки списка объектов
return_url Да URL, на который перенаправляется пользователь после отправки формы

Теги

Следующие пользовательские теги шаблонов доступны в InfraVision.

Информация

Они загружаются автоматически бэкендом шаблонов: вам не нужно включать тег {% load %} в ваш шаблон для их активации.

::: utilities.templatetags.builtins.tags.badge

::: utilities.templatetags.builtins.tags.checkmark

::: utilities.templatetags.builtins.tags.customfield_value

::: utilities.templatetags.builtins.tags.tag

Фильтры

Следующие пользовательские фильтры шаблонов доступны в InfraVision.

Информация

Они загружаются автоматически бэкендом шаблонов: вам не нужно включать тег {% load %} в ваш шаблон для их активации.

::: utilities.templatetags.builtins.filters.bettertitle

::: utilities.templatetags.builtins.filters.content_type

::: utilities.templatetags.builtins.filters.content_type_id

::: utilities.templatetags.builtins.filters.linkify

::: utilities.templatetags.builtins.filters.meta

::: utilities.templatetags.builtins.filters.placeholder

::: utilities.templatetags.builtins.filters.render_json

::: utilities.templatetags.builtins.filters.render_markdown

::: utilities.templatetags.builtins.filters.render_yaml

::: utilities.templatetags.builtins.filters.split

::: utilities.templatetags.builtins.filters.tzoffset