从金字塔应用程序视图中获取Mako模板

我目前正在使用金字塔网页框架,并使用Mako模板进行配置。 我知道我可以在一个视图方法内渲染一个模板作为字符串(金字塔 - 是否可以呈现我的mako模板作为我的视图中的字符串可调用?),但是,我想知道是否有可能得到实际模板对象在视图中,而不只是一个函数来呈现模板。

查看Pyramid源代码,在mako_templating.py中,我看到默认的TemplateLookup类被Pyramid的查找方法覆盖。 无论如何访问这个查找对象主要是因为我可以使用它的一部分get_template函数?

感谢有关此问题的任何指示。


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)

这适用于我:

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标签的工作方式与呈现给视图响应的模板一样。

链接地址: http://www.djcxy.com/p/69091.html

上一篇: Get Mako template from within Pyramid app view

下一篇: Calling another view in Pyramid