问题描述
|
我有一个看起来类似于的可调用视图:
def post_comment(request):
\"\"\" Posts the users comment to the thread \"\"\"
try:
new_comment = comments.post()
except InvalidComment as e:
return {\'success\' : False,\'message\' : e.message}
# need to do something like:
new_comment = pyramid.template.render(new_comment)
return {\'success\' : True,\'message\' : new_comment}
此视图可调用的路由配置为:
config.add_route(\'post_comment\',\'/comments/{link_id}/post\',view=\'site.views.post_comment\',view_renderer=\'json\')
使用此工具,我可以AJAXify我的评论提交,并拥有一个闪亮的Web 2.0网站。问题是,我想通过我的mako模板渲染new_comment
来构建HTML并将其返回。但是,我找不到解决方法。
如何在视图中渲染可调用的mako模板,以将HTML作为JSON响应返回?
解决方法
您可以使用此处记录的Pyramid API直接调用
render
:http://docs.pylonsproject.org/projects/pyramid/1.0/api/renderers.html#pyramid.renderers.render
from pyramid.renderers import render
def my_view(request)
renderer_dict = {} # dictionary of values to pass to the renderer
new_comment = render(\'new_comment.mako\',renderer_dict,request)
…
, 我不确定我是否理解您的问题,但我认为您需要2个视图,一个用于json,另一个用于mako。对于mako视图,请遵循官方文档和mmerickel的回答。如果要在同一个类中包含多个视图可调用对象,可以查看pyramid_handlers。