Система шаблонизации предназначена для того, чтобы вставить данные в соответствующие места файла-шаблона. Например, бланк настроек абонента представляет собой шаблон, в который NoDeny вставляет данные абонента в нужные места. Шаблонизатор NoDeny во многом повторяет синтаксис стандартного django шаблонизатора, но есть небольшие отличия.
Доступ к полям сложных структур
| Шаблон | Входные данные | Результат |
Данные клиента:
fio = {{user.fio}}
phone = {{user.data._adr_phone}}
|
user => {
fio => 'Иванов Сергей',
name => 'Ivanov',
data => {
_adr_phone => '067-12312312',
_adr_house => '25',
_adr_room => '14',
}
}
|
Данные клиента:
fio = Иванов Сергей
phone = 067-12312312
|
Условия
| Шаблон | Входные данные | Результат |
Здравствуйте,
{% if name %}{{name}}
{% else %}незнакомец
{% endif %}
На вашем счету {{balance}} рублей
|
name = ''
balance = 15
|
Здравствуйте, незнакомец
На вашем счету 15 рублей
|
{% if cash > 1000 %}
Очень большая сумма!
{% else %}
Всего-то {{cash}} рублей?
{% endif %}
|
cash = 999
|
Всего-то 999 рублей?
|
{% if name == 'admin' && error %}
Произошла ошибка: {{error}}
{% endif %}
|
name = 'admin'
error = 'wrong sql'
|
Произошла ошибка: wrong sql
|
Циклы
| Шаблон | Входные данные | Результат |
{% for user in users %}
{{user.name}} : {{user.fio}}
{% endfor %}
|
users => {
15 => {
fio => 'Петров',
name => 'Petroff'
},
16 => {
fio => 'Болтунов',
name => 'Mol4un'
},
};
|
Petroff : Петров
Mol4un : Болтунов
|
Вызов метода
| Шаблон | Входные данные | Результат |
message: {{msg.show()}}
|
my $msg = bless { data => 'ok, man' };
sub show { return $msg->{data}.'!'};
nod::tmpl::render('test.tmpl', msg => $msg);
|
message: ok, man!
|
Обратите внимание, что в отличие от django шаблонизатора, после вызова метода мы явно ставим круглые скобки.
Фильтрация спецсимволов
| Шаблон | Входные данные | Результат |
ФИО: {{fio|safe}}
|
fio => '<test>'
|
ФИО: <test>
|
Вычисления
| Шаблон | Входные данные | Результат |
{% eval i = 0 %}
{% for word in words %}
{% eval i = i + 1 %}
{{i}}: {{word}}
{% endfor %}
|
words=> ['aaa', 'bbb', 'ccc']
|
1: aaa
2: bbb
3: ccc
|