Я использую эту процедуру, чтобы использовать базовый шаблон, из которого могут извлекаться другие шаблоны.
Как я могу создать несколько базовых шаблонов?
Просто зарегистрируйте их обоих:
from pyramid.renderers import get_renderer def add_base_template(event): base = get_renderer('templates/base.pt').implementation() base2 = get_renderer('templates/base2.pt').implementation() event.update({'base': base, 'base2': base2})
И затем выберите, какой из них использовать в своем шаблоне для каждой страницы:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal" metal:use-macro="base"> <tal:block metal:fill-slot="content"> My awesome content. </tal:block> </html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal" metal:use-macro="base2"> <tal:block metal:fill-slot="content"> Content on a totally different page. </tal:block>
Я считаю, что шаблон не имеетбыть целым элементом HTML, так что вы можете вместо этого развернуть 2 макроса в один и тот же окончательный шаблон
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal"> <body> <div metal:use-macro="section1"> <tal:block metal:fill-slot="content"> Content for template "section1". </tal:block> </div> <div metal:use-macro="section2"> <tal:block metal:fill-slot="content"> Content for template "section2". </tal:block> </div> </body>