Шаблонизатор: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
 
(Не показані 3 проміжні версії цього користувача)
Рядок 29: Рядок 29:
Пробелы между фигурными скобками и именем переменной необязательны.
Пробелы между фигурными скобками и именем переменной необязательны.
<br><br>
<br><br>
[[#include|-]]
{{якорь|конец}}


==Импорт файла==
==Импорт файла==
Рядок 50: Рядок 47:
Если в разделе документов будет существовать документ с тегом template=test - файл test.html не будет загружаться с диска, а будет взят из данного документа. Естественно, также должен присутствовать тег system для защиты от подмены шаблона персоналом без суперпривилегий.
Если в разделе документов будет существовать документ с тегом template=test - файл test.html не будет загружаться с диска, а будет взят из данного документа. Естественно, также должен присутствовать тег system для защиты от подмены шаблона персоналом без суперпривилегий.


Если необходимо наследовать шаблон по типу extend в фреймворке django, также необходимо воспользоваться командой include, а блок(и), которые необходимо вставить в "верхний" шаблон, нужно обернуть в global_block. Например. Шаблон test_base:
Если необходимо наследовать шаблон по типу extend в фреймворке django, также необходимо воспользоваться командой include, а блок(и), которые необходимо вставить в «верхний» шаблон, нужно обернуть в global_block. Например. Шаблон test_base:


<pre>
<pre>
Рядок 70: Рядок 67:
</pre>
</pre>


При рендеринге шаблона show_info.html будет загружен шаблон test_base.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 должна идти после определения блоков, которые вставляются в данный шаблон