从Pyramid应用程序视图中获取Mako模板

时间:2013-03-19 20:29:01

标签: python pyramid mako

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

查看Pyramid源代码,在 mako_templating.py 中,我看到使用Pyramid的查找方法覆盖了默认的TemplateLookup类。反正是否主要访问此查找对象,以便我可以使用 get_template 函数作为其中的一部分?

感谢您对此问题的任何指示。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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标记的工作方式与呈现给视图响应的模板一样。