использование базовых шаблонов макета в хамелеоне

В документации пирамиды есть хороший туториал по UX:

http://docs.pylonsproject.org/projects/pyramid_tutorials/en/latest/humans/creatingux/step07/index.html

Одна вещь, которую я заметил, заключается в том, что в учебнике они настраивают и передают «глобальный макет» явно в коде (см. Ниже). Я думал, что это было необычно и ненужно, потому что я всегда просто использовал команду «загрузить», как показано в документации здесь:

http://chameleon.repoze.org/docs/latest/

Является ли это просто вопросом личных предпочтений или есть реальные преимущества в настройке и использовании «глобального макета» таким образом?

Базовый класс представления учебника:

class Layouts(object):
    @reify
    def global_template(self):
        renderer = get_renderer("templates/global_layout.pt")
        return renderer.implementation().macros['layout']

Файл шаблона учебника:

<div metal:use-macro="view.global_template">
    <div metal:fill-slot="content">
        <p>Home page content goes here.</p>
    </div>
</div>

Но в моих файлах шаблонов я просто использую:

<div metal:use-macro="load: global_layout.pt">
    <div metal:fill-slot="content">
        <p>Home page content goes here.</p>
    </div>
</div>

person lostdorje    schedule 13.01.2012    source источник


Ответы (1)


Косвенный способ (через представление) дает вам больше гибкости. Преимущества не так очевидны в небольшом проекте, но такой подход обязательно окупится в более крупном. "load:" жестко кодирует ваш main_template (на языке Zope/Plone), чтобы он был здесь. С представлением оно может прийти из любого места и измениться независимо от ваших шаблонов.

person Roman Susi    schedule 13.01.2012
comment
А, это имеет смысл. Спасибо за понимание. - person lostdorje; 16.01.2012