Найти - Пользователи
Полная версия: pyramid_layout как использовать в configure.zcml
Начало » Pyramid / Pylons / TurboGears » pyramid_layout как использовать в configure.zcml
1
Andrey Skobeldin
Подскажите, пожалуйста, как правильно в configure.zcml описать layouts и panels? А также, как в этом же файле привязать конкретный layout к конкретному виду?

мой configure.zcml:
<configure xmlns="http://pylonshq.com/pyramid"
	       xmlns:lat="http://pylonshq.com/pyramid_layout">
    <include package="pyramid_zcml" />
    <include package="pyramid_layout" file="meta.zcml"/>
    <static
        name="static"
        path="static"
    />
    <!-- layouts -->
    <lat:layout
        name="test"
        layout=".layouts.AppLayout"
        template="templates/layouts/layout1.pt"
    />
    <!-- default view -->
    <view
        view=".views.my_view"
        renderer="templates/home.pt"
    />
    <view
        name="two"
        view=".views.my_view2"
        renderer="templates/mytemplate2.pt"
    />
</configure>

а home.pt:
<metal:block use-macro="main_template">
    <div metal:fill-slot="content">
        <h1>It is home view</h1>
        <p>Hello home.pt template</p>
        <p>Project is: ${project}</p>
    </div>
</metal:block>
при вызове вида получаю ошибку: NameError: main_template

Но если в самом виде использовать конструкцию:
request.layout_manager.use_layout('test')
вид отображается правильно.

Хотелось бы все законфигурировать декларативно в zcml файле.
bismigalis
Я с этим пакетом не работал, но насколько я понял для каждой вьюхи в конфе надо указывать лайоут

Я кажется понял. Ты задал name для layout поэтому надо указывать, если убрать name это будет дефолтный лайоут.
Andrey Skobeldin
Да, надо указывать имя лайаута для вида.
Если все сделать в коде с использованием декораторов, то все прекрасно работает. Но как это же сделать в zcml - не понимаю.
bismigalis
Я вообще не нашел в доках pyramid_layout про zcml настройку, но по аналогии с декоратором может так:

   <view
        view=".views.my_view"
        renderer="templates/home.pt"
        layout="test"
    />
Andrey Skobeldin
Я аналогично думал, сразу так и написал - не работает. Ругается что ConfigurationError: ('Unrecognized parameters:', ‘layout’);

если в конфигурации вида записать
<view
        view=".views.my_view"
        renderer="templates/home.pt"
        lat:layout="test"
    />
то пирамида запускается без ругани, но при вызове вида: NameError: main_template, причем что-то не нравится в строчке шаблона
- Expression: "main_template"
 - Filename:   ... o\python_test\pyramid7\myzcml1\myzcml1\templates\home.pt
 - Location:   (line 1: col 24)
 - Source:     <metal:block use-macro="main_template">
bismigalis
получается main_template не прокидывается

что-то мне кажется поддержка zcml должна быть в самом пакете и в pyramid_layout ее нет

спроси-ка лучше в рассылке
Andrey Skobeldin
спасибо, попробую
AyanPrince
it is necessary to specify the name of layauta for the species.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB