2

我目前正在使用 Pyramid Web 框架,并使用 Mako 模板对其进行了配置。我知道我可以在视图方法中将模板呈现为字符串(Pyramid - Is it possible to render my mako template as a string in my view callable?),但是,我想知道是否可以得到实际的视图中的模板对象,而不仅仅是渲染模板的函数。

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

于 2015-06-05T19:49:16.350 回答