0

ターボギア2にdjangoコンテキストプロセッサのアナログはありますか?tg1ではstdvarsでしたが、tg2ではもうありません。

説明:各コントローラーで明確に宣言せずに、各ページで使用できるいくつかのテンプレートタグを用意する必要があります。

4

2 に答える 2

4

これを達成するための3つの可能な解決策があります。

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

もう1つのアプローチは、base_config.variable_provider内部に登録app_cfg.pyすることです。これは、任意のテンプレート内で使用できる変数のディクショナリを返す関数である必要があります。名前の衝突がある場合、これらの変数はコントローラーが返す変数からオーバーライドされるため、コントローラーが返す変数のデフォルトを提供するのに適した方法です。

それ以外の場合、最近のバージョンでは、コールバック内before_renderを使用してシステム全体にフックを登録することも可能であり、任意のテンプレートパラメーターを追加およびオーバーライドできます。base_config.register_hookapp_cfg.py

于 2012-03-19T11:06:18.187 に答える
1

これが最善の方法かどうかはわかりませんが、app_globals.Globalに次を追加できます。

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

次に、テンプレートで:

${g.foo()}

または、ajaxリクエストを介してそれを行うことができます...

于 2011-11-21T15:00:53.580 に答える