См.также
В пирамиде нет встроенного шаблонизатора. Представления (view callable)
всегда отдают объект response. Этот объект может формироваться напрямую,
например Response("Hello, world!"). При помощи встроенных обработчиков
(string, json, jsonp), самописных или сторонних. Или через специальные функции,
например pyramid.renderers.render_to_response().
Дополнительные обработчики могут поставляться сторонними модулями:
config.include('pyramid_chameleon') # Chameleon - template engine
config.include('pyramid_jinja2') # Jinja2 -template engine
config.include('pyramid_mako') # Mako -template engineОбработка напрямую происходит при помощи функции
pyramid.renderers.render_to_response().
Примечание
Предварительно нужно добавить расширение, которое знает как обрабатывать шаблоны Chameleon.
config.include('pyramid_chameleon')from pyramid.renderers import render_to_response
def sample_view(request):
return render_to_response('mypackage:templates/foo.pt',
{'foo':1, 'bar':2},
request=request)Функция pyramid.renderers.render() вернет только текст, а не объект response.
from pyramid.renderers import render
from pyramid.response import Response
def sample_view(request):
result = render('mypackage:templates/foo.pt',
{'foo':1, 'bar':2},
request=request)
response = Response(result)
return responseТакой подход позволяет, например, использовать возможности самого шаблонизатора напрямую.
from mako.template import Template
from pyramid.response import Response
def make_view(request):
template = Template(filename='/templates/template.mak')
result = template.render(name=request.params['name'])
response = Response(result)
return responseАльтернативный способ функции render_to_response(),
это привязывать к представлению свой обработчик. При этом представление
возвращает только словарь, который в последующем будет обработан этим
рендерером.
from pyramid.view import view_config
@view_config(renderer='mypackage:templates/foo.jinja2')
def my_view(request):
return {'foo':1, 'bar':2}Этот код идентичен:
from pyramid.renderers import render
from pyramid.response import Response
def sample_view(request):
result = render('mypackage:templates/foo.jinja2',
{'foo':1, 'bar':2},
request=request)
response = Response(result)
return responseСм.также
pip install pyramid_jinja2Добавляется стандартными средствами:
config.Configurator()
config.include('pyramid_jinja2')или
pyramid.includes=
pyramid_jinja2@view_config(renderer='mypackage:templates/mytemplate.jinja2')
def my_view(request):
return {'foo': 1, 'bar': 2}По умолчанию pyramid_jinja2 ищет директорию с шаблонами относительно вашего
проекта, поэтому можно опустить название проекта.
@view_config(renderer='templates/mytemplate.jinja2')
def my_view(request):
return {'foo': 1, 'bar': 2}<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello World!</title>
</head>
<body>
<h1>{{ foo }}</h1>
<h1>{{ bar }}</h1>
</body>
</html>Фреймворк Pyramid не ограничивает вас в использовании какого-либо определенного шаблонизатора. Вы можете выбрать любой который вам понравится или пользоваться несколькими, при этом можно написать собственные обработчики запросов, даже не привязанные к движкам шаблонов и даже написать свой собственный шаблонизатор с расширением для пирамиды, как например Tonnikala.