1

我有一个看起来类似于以下内容的可调用视图:

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 网站。问题是,我想new_comment通过我的 mako 模板渲染来构建 HTML 并返回它。但是,我找不到这样做的方法。

如何在可调用的视图中呈现 mako 模板以将 HTML 作为 JSON 响应返回?

4

2 回答 2

8

您可以render使用此处记录的 Pyramid API 直接调用: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)
    …
于 2011-06-13T15:29:12.813 回答
0

我不确定我是否理解您的问题,但我认为您需要 2 个视图,一个用于 json,另一个用于 mako。对于 mako 视图,请遵循官方文档和 mmerickel 的回答。如果您想在同一个类中有多个视图可调用对象,可以查看pyramid_handlers

于 2011-06-13T12:08:03.687 回答