2011-11-11 5 views
4

目的:ベーステンプレートと子テンプレートの両方でmyargsにアクセスする。現在、私はそれらをどちらか一方だけにアクセスすることができます。Mako:変数をベーステンプレートと子テンプレートに渡す

コール:

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が未定義でベースが機能するため、子がエラーをスローします。 子バージョン2を使用すると、myargsが定義されておらず、子が動作するため、ベーススローエラーが発生します。

これらは正確な例ではありませんが、それは私のジレンマの本質です。素敵な継承連鎖を介して変数を渡す方法を誰かが説明できる場合。残念ながら、Makoのドキュメントはこのセクションをスキップしているようです。

答えて

3

ニースの簡単な解決方法

「ページargs」は、この原因のためには役に立ちませんが、実際にページの1つに「myargs」を「なし」で上書きすることで問題が発生していました。キーワード変数は、 "page args"を使わずに両方のファイルから直接アクセスできます。

+0

あなたは、古いmakoで、私たちは<%page args = "x" />を使用しなければなりませんでした。 –

関連する問題