1

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

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

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

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

4

1 回答 1

1

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

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

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

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

于 2012-07-08T08:54:58.447 回答