Мако: передача переменных в базовый и дочерний шаблоны - PullRequest
4 голосов
/ 11 ноября 2011

Цель: получить доступ к myargs в базовом и дочернем шаблонах. В настоящее время я могу получить к ним доступ только в одном или другом.

Звоните:

child.render(myargs={'a':2, b:'5'})

Базовый отрывок:

<%page args="myargs=None, **kwargs"/>
% if myargs['a']:
    a is: ${myargs['a']}
% endif
${self.body(myargs=myargs)}

Детский отрывок, версия 1:

<%page args="myargs=None, **kwargs"/>
<%inherit file="/base.html" />

% if myargs['b']:
    b is: ${myargs['b']}
% endif

Детский отрывок, версия 2:

<%page args="myargs=None, **kwargs"/>
<%inherit file="/base.html" />
<%def name="body()">
% if myargs['b']:
    b is: ${myargs['b']}
% endif
</%def>

При использовании дочерней версии 1 дочерний элемент выдает ошибку, поскольку myargs не определен, а base работает. При использовании дочерней версии 2 база выдает ошибку, поскольку myargs не определен, а дочерний объект работает.

Это не точные примеры, но это суть моей дилеммы. Если кто-то может объяснить, как передавать переменные через цепочку наследования, это было бы прекрасно. К сожалению, документация для Мако, кажется, пропускает этот раздел.

1 Ответ

3 голосов
/ 12 ноября 2011

Хорошее простое решение. Lol.

Оказывается, "аргументы страницы" не нужны для этого, на самом деле они создавали проблему, перезаписывая "myargs" словом "None" на одной из страниц.К переменным ключевых слов можно обращаться напрямую из обоих файлов без использования «аргументов страницы».

...