turbogears2にdjangoコンテキストプロセッサのアナログはありますか? tg1ではstdvarsでしたが、tg2ではこれ以上ありませんでした。Turbogears2:djangoコンテキストプロセッサのアナログ
説明: 各コントローラに明示的に宣言することなく、各ページにいくつかのテンプレートタグを用意する必要があります。
turbogears2にdjangoコンテキストプロセッサのアナログはありますか? tg1ではstdvarsでしたが、tg2ではこれ以上ありませんでした。Turbogears2:djangoコンテキストプロセッサのアナログ
説明: 各コントローラに明示的に宣言することなく、各ページにいくつかのテンプレートタグを用意する必要があります。
これを達成するには、3つの解決策があります。
まず、tg.tmpl_context
を使用できます。これは、すべてのテンプレート内でtmpl_context
として利用できます。 BaseController.__call__
内の変数は、すべての場所で使用できるように入力することができます。
app_cfg.py
の中にbase_config.variable_provider
を登録する方法もあります。これは、任意のテンプレート内で使用できる変数の辞書を返す関数でなければなりません。これらの変数は、名前の衝突がある場合にコントローラから返された変数からオーバーライドされるため、コントローラの返された変数のデフォルトを提供するための良い方法です。
最近のバージョンではbase_config.register_hook
をapp_cfg.py
の内部で使用してbefore_render
フックをシステム全体に登録することも可能です。コールバックは任意のテンプレートパラメータを追加して上書きできます。
私は、これはそれを行うの最善の方法だろうかはわからないが、あなたはapp_globals.Globalに以下を追加することができます:あなたのあなたのテンプレートで
from genshi.core import Markup
self.foo = lambda: Markup("<div>my content here!!!</div>")
、その後を:
${g.foo()}
またはこれを行うことができます。
'base_config.variable_provider'は私にとっても新しいです! – moschlar