通常、Makoの名前空間を "インポート"すると、defにしかアクセスできないように見えます。Mako名前空間で定義されたアクセス変数
## base.mako
<%
somevar = ["one", "two", "three"]
%>
<%def name="foo()">Bar</%def>
とインポートテンプレート:私のユースケースsomevar
とfoo
で
## child.mako
<%namespace name="base" file="base.mako" />
${base.foo()} # works
${base.somevar} # fails: no soup for you
が関連しています。インポートテンプレート内からsomevar
にアクセスすることもできれば便利です。これを行うベストプラクティスは何ですか?
'getSomeVar()'関数をオプションに追加していませんか? – 9000
@ 9000:通常、 'somevar'はレンダリング時にテンプレート本体に出力される文字列ではなく、関数やdefの引数として使用される任意のpythonオブジェクトになります。この場合、getSomeVar()をどのように記述して呼び出すのですか? – sink
関数fooをインポートできますが、somevarという名前はありません。あなたは 'def getSomeVar():return somevar'をベースで定義し、うまくいけば' somevar'と同じように 'base.getSomeVar()'を使うことができます。 – 9000