Шаблонизатор: відмінності між версіями
Sv (обговорення | внесок) |
Sv (обговорення | внесок) |
||
(Не показано одну проміжну версію цього користувача) | |||
Рядок 29: | Рядок 29: | ||
Пробелы между фигурными скобками и именем переменной необязательны. | Пробелы между фигурными скобками и именем переменной необязательны. | ||
<br><br> | <br><br> | ||
==Импорт файла== | ==Импорт файла== | ||
Рядок 49: | Рядок 47: | ||
Если в разделе документов будет существовать документ с тегом template=test - файл test.html не будет загружаться с диска, а будет взят из данного документа. Естественно, также должен присутствовать тег system для защиты от подмены шаблона персоналом без суперпривилегий. | Если в разделе документов будет существовать документ с тегом template=test - файл test.html не будет загружаться с диска, а будет взят из данного документа. Естественно, также должен присутствовать тег system для защиты от подмены шаблона персоналом без суперпривилегий. | ||
Если необходимо наследовать шаблон по типу extend в фреймворке django, также необходимо воспользоваться командой include, а блок(и), которые необходимо вставить в | Если необходимо наследовать шаблон по типу extend в фреймворке django, также необходимо воспользоваться командой include, а блок(и), которые необходимо вставить в «верхний» шаблон, нужно обернуть в global_block. Например. Шаблон test_base: | ||
<pre> | <pre> | ||
Рядок 69: | Рядок 67: | ||
</pre> | </pre> | ||
При рендеринге шаблона show_info.html будет загружен шаблон test_base.html и в него будет вставлен фрагмент | При рендеринге шаблона show_info.html будет загружен шаблон test_base.html и в него будет вставлен фрагмент «Есть интересная информация». Обратите внимание, загрузка шаблона test_base.html должна идти после определения блоков, которые вставляются в данный шаблон |
Поточна версія на 07:00, 26 серпня 2023
Шаблонизатор NoDeny позволяет генерировать файл (обычно html) по шаблону. Шаблонизация полезна тем, что не нужно лезть в код чтобы изменить дизайн, добавить какие-то блоки или поменять их положение. В NoDeny используется в основном для рендеринга личного кабинета абонента, а также для формирования конфигов модулем make_config.
В административном интерфейса шаблонизатор практически не используется из-за громадного количества данных, оформление которых осуществляется в коде. На данный момент полный переход на шаблонизацию слишком затратен по ресурсам разработчиков. Тем не менее, некоторые блоки шаблонизированы, например: базовая структура админки в файле base.html, страница логина login.html и некоторые другие.
По умолчанию шаблоны для админки находятся в /usr/local/nodeny/web/, а кабинета клиента - в /usr/local/nodeny/web/user/
Шаблонизатор NoDeny во многом повторяет синтаксис стандартного django шаблонизатора, но есть небольшие отличия.
Вставка переменной
{{ имя переменной }}
Например:
Здравствуйте, администратор {{ admin_name }} Данные клиента: fio = {{user.fio}} balance = {{user.balance}}
Пробелы между фигурными скобками и именем переменной необязательны.
Импорт файла
{% include 'test.html' %}
Будет загружен файл /usr/local/nodeny/web/tmpl/test.html
Например:
Привет! Содержимое файла test.html: {% include 'test.html' %} Ясно?
Если в разделе документов будет существовать документ с тегом template=test - файл test.html не будет загружаться с диска, а будет взят из данного документа. Естественно, также должен присутствовать тег system для защиты от подмены шаблона персоналом без суперпривилегий.
Если необходимо наследовать шаблон по типу extend в фреймворке django, также необходимо воспользоваться командой include, а блок(и), которые необходимо вставить в «верхний» шаблон, нужно обернуть в global_block. Например. Шаблон test_base:
<html> <boby> {{ template::test_base.body }} </body> </html>
Шаблон show_info:
{% global_block template::test_base.body %} Есть интересная информация {% endblock %} {% include 'test_base.html' %}
При рендеринге шаблона show_info.html будет загружен шаблон test_base.html и в него будет вставлен фрагмент «Есть интересная информация». Обратите внимание, загрузка шаблона test_base.html должна идти после определения блоков, которые вставляются в данный шаблон