金字塔-是否可以将我的mako模板呈现为可调用视图中的字符串?

问题描述

| 我有一个看起来类似于的可调用视图:
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。