2011-10-27 20 views
0

turbogears2にdjangoコンテキストプロセッサのアナログはありますか? tg1ではstdvarsでしたが、tg2ではこれ以上ありませんでした。Turbogears2:djangoコンテキストプロセッサのアナログ

説明: 各コントローラに明示的に宣言することなく、各ページにいくつかのテンプレートタグを用意する必要があります。

答えて

3

これを達成するには、3つの解決策があります。

まず、tg.tmpl_contextを使用できます。これは、すべてのテンプレート内でtmpl_contextとして利用できます。 BaseController.__call__内の変数は、すべての場所で使用できるように入力することができます。

app_cfg.pyの中にbase_config.variable_providerを登録する方法もあります。これは、任意のテンプレート内で使用できる変数の辞書を返す関数でなければなりません。これらの変数は、名前の衝突がある場合にコントローラから返された変数からオーバーライドされるため、コントローラの返された変数のデフォルトを提供するための良い方法です。

最近のバージョンではbase_config.register_hookapp_cfg.pyの内部で使用してbefore_renderフックをシステム全体に登録することも可能です。コールバックは任意のテンプレートパラメータを追加して上書きできます。

+0

'base_config.variable_provider'は私にとっても新しいです! – moschlar

1

私は、これはそれを行うの最善の方法だろうかはわからないが、あなたはapp_globals.Globalに以下を追加することができます:あなたのあなたのテンプレートで

from genshi.core import Markup 
self.foo = lambda: Markup("<div>my content here!!!</div>") 

、その後を:

${g.foo()} 

またはこれを行うことができます。

関連する問題