Шаблоны
Шаблоны используются для отрисовки 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