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