Pyramid - 能否在视图可调用中将我的mako模板渲染为字符串?

1 投票
2 回答
2620 浏览
提问于 2025-04-16 19:24

我有一个可以调用的视图,看起来大概是这样的:

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')

通过这个,我可以让我的评论提交变得更现代化,打造一个炫酷的Web 2.0网站。不过,我遇到的问题是,我想通过我的mako模板来渲染new_comment,生成HTML并返回。但是,我找不到办法做到这一点。

我该如何在我的可调用视图中渲染mako模板,以便将HTML作为JSON响应返回呢?

2 个回答

0

我不太确定我理解你的问题,但我觉得你需要两个视图,一个用来处理json,另一个用来处理mako。关于mako视图,你可以参考官方文档和mmerickel的回答。如果你想在同一个类里面有多个视图调用,可以看看pyramid_handlers

8

你可以直接使用文档中介绍的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)
    …

撰写回答