Декоратор jinja2_view
Декоратор jinja2_view применяется к функции-обработчику
маршрута и указывает, какой Jinja2-шаблон нужно отрендерить
для ответа клиенту. Первым параметром передаётся имя или путь
шаблона, дополнительными параметрами можно задать словарь
с дополнительными переменными, имя функции-обёртки и другие
настройки. Словарь, возвращаемый декорируемой функцией,
становится контекстом шаблона.
Декоратор работает совместно с классом Jinja2Template
и требует установленного пакета Jinja2.
Синтаксис
@jinja2_view(tpl, [tpl_dict], [adapter], [**kwargs])
Пример
Давайте отрендерим простейший Jinja2-шаблон для адреса '/':
from bottle import Bottle, jinja2_view
app = Bottle()
@app.route('/')
@jinja2_view('index')
def index():
return dict()
Файл шаблона views/index.jinja2:
hello
Результат выполнения кода:
Пример
Давайте передадим переменную name в шаблон через возвращаемый словарь:
from bottle import Bottle, jinja2_view
app = Bottle()
@app.route('/user')
@jinja2_view('user')
def user():
return dict(name='abcde')
Файл шаблона views/user.jinja2:
Hello, {{ name }}!
Результат выполнения кода для адреса /user:
Hello, abcde!
Пример
Давайте отрендерим список items внутри шаблона с помощью цикла Jinja2:
from bottle import Bottle, jinja2_view
app = Bottle()
@app.route('/items')
@jinja2_view('items')
def items():
return dict(items=['a', 'b', 'c', 'd', 'e'])
Файл шаблона views/items.jinja2:
{% for item in items %}
{{ item }}
{% endfor %}
Результат выполнения кода для адреса /items:
a
b
c
d
e
Смотрите также
-
декоратор
view,
который рендерит SimpleTemplate-шаблон -
функцию
jinja2_template,
которая рендерит Jinja2-шаблон без декоратора -
класс
Jinja2Template,
который отвечает за работу с Jinja2-шаблонами -
декоратор
mako_view,
который рендерит Mako-шаблон