2

Python のボトル ​​フレームワークを使用して、単純な Web ページを開発しています。ディクショナリをサブテンプレートに渡す方法がわかりません。コード例:

薬事:

{
message: "Hello World",
...other template vars ... 
}

Router.py

@route('/index.html')
@view('index.tpl')
def index():
    return mydictionary

ビュー/index.tpl

<body>
%include subpage1 ......  <-- need to pass mydictionary here
...other stuff ...
</body>

ビュー/subpage1.tpl

<div>This is a test: {{message}}</div>

ドキュメントページには次のように記載されています。

*%include ステートメント: %include sub_template [kwargs] ステートメントを使用して、他のテンプレートを含めることができます。sub_template パラメーターは、含めるテンプレートの名前またはパスを指定します。行の残りの部分は、関数呼び出しのキーワード引数と同様に、key=statement ペアのコンマ区切りリストとして解釈されます。これらは、SimpleTemplate.render() 呼び出しに似たサブテンプレートに渡されます。dict を渡すための **kwargs 構文も使用できます*:

ただし、この **kwargs を含むディクショナリをサブテンプレートに渡す方法の例はありません。誰もこれをやったことがありますか?%include subpage1 mydictionary とだけ言うと、ボトルは mydictionary が未定義であると不平を言います (mydictionary は [Router.py で定義された] グローバル dict ですが)。

よろしくGA

4

3 に答える 3

1

テンプレートファイルで次のことを行うことで、これを回避しました。

ビュー/index.tpl

<body>
%from mydictfile import * <-- importing mydict here
%include subpage1 mydict  
...other stuff ...
</body>

mydictfile:

mydict = {
message: "Hello World",
...other template vars ... 
}

これは私のために働いているようです。

于 2012-07-24T05:21:38.657 に答える
0

キーワード引数が必要です。試す:

%include subpage1 mydict=mydict ...
于 2012-07-23T14:07:16.263 に答える