金字塔:如何在运行时在view.py中获取当前渲染器名称

时间:2012-07-08 08:34:53

标签: python pyramid renderer

Pyramid提供了beforeRenderer

    from repoze.events import subscriber
    from pyramid.events import BeforeRender

    @subscriber(BeforeRender)
    def add_global(event):
        print event['renderer_name']      #this is the renderer name
        print event['renderer_info'].name #same with event['renderer_name']

但没用。如果我更改或删除事件['renderer_name']和事件['renderer_info']。name,它也可以在config中找到渲染器(模板文件)。

    config.add_view('mywork.views.index.index',
                     route_name='/index',
                     renderer='mywork:templates/index.pt')

我想在view.py或root_factory中使用渲染器的名称来更改渲染器值,因此它可以更改所有模板。

1 个答案:

答案 0 :(得分:1)

在渲染之前调用BeforeRender。换句话说,它在view.py之后调用,我假设你放置了你的视图。在此之前也会调用root_factoryroot_factory用于创建遍历的根节点。这将返回一个上下文。没有上下文,您的视图不会被调用,金字塔会引发上下文未找到错误。

在您的视图返回一些参数之后调用BeforeRender,或者可能在调用返回渲染器响应的renderToResponse之前调用。您可以在视图中传递渲染器。

http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/templates.html#using-templates-directly

您必须在设置视图时删除渲染器参数。

相关问题