金字塔 - 是否可以在我的视图中将我的mako模板渲染为字符串?

时间:2011-06-12 11:16:09

标签: python ajax json pyramid

我有一个可调用的视图,看起来类似于:

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响应返回?

2 个答案:

答案 0 :(得分:8)

您可以在此处使用记录的Pyramid API直接致电renderhttp://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)
    …

答案 1 :(得分:0)

我不确定我理解你的问题,但我认为你需要2个视图,一个用于json,另一个用于mako。对于mako视图,请遵循the official docs和mmerickel的回答。如果您想在同一个班级中拥有多个视图可调用对象,可以查看pyramid_handlers