2

現在、Pyramid Webフレームワークを使用しており、Makoテンプレートを使用して構成しています。ビューメソッド内からテンプレートを文字列としてレンダリングできることは知っていますが(Pyramid-呼び出し可能なビュー内で文字列としてmakoテンプレートをレンダリングすることは可能ですか?)、実際のテンプレートをレンダリングする関数だけでなく、ビュー内からのテンプレートオブジェクト。

Pyramidのソースコードを見ると、mako_templating.pyで、デフォルトのTemplateLookupクラスがPyramidのルックアップメソッドでオーバーライドされていることがわかります。このルックアップオブジェクトに主にアクセスして、その一部であるget_template関数を使用できるようにする方法はありますか?

この問題についての指示をありがとう。

4

2 に答える 2

4

このレベルのイントロスペクションは、PyramidのレンダリングAPIでは公式にはサポートされていません。そうは言っても、これを行う方法があります。これは完全に文書化されていない、サポートされていない、プライベートなどです。つまり、これが機能しなくなっても文句を言わないでください。

from pyramid.mako_templating import IMakoLookup
lookup = request.registry.queryUtility(IMakoLookup, name='mako.')
tmpl = lookup.get_template('myapp:templates/foo.mako')

opts = {} # rendering context
result = tmpl.render_unicode(**opts)
于 2013-03-21T04:51:52.963 に答える
0

これは私のために働きます:

from pyramid.renderers import render
sRenderedStuff = render('path/to/template.mak',dContext)

ユースケースの例は次のようになります。

sEmailHtml = render("email/welcome_message_html.mak",dContext)

ピラミッド設定ファイルに次の行があります。

mako.directories = your_app:templates

テンプレートはからフェッチされyour_app/templates/email/welcome_message.htmlます。すべてのタグinheritanceincludeタグは、ビューの応答にレンダリングされたテンプレートの場合と同じように機能します。

于 2015-06-05T19:49:16.350 に答える