繁体   English   中英

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

[英]Pyramid:How to get current renderer name in view.py at runtime

金字塔提供了一个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中找到渲染器(模板文件)。

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

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

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

在视图返回一些参数之后或可能在调用renderToResponse之前(返回渲染器响应)之前,调用renderToResponse 您可以在那里从视图中传递渲染器。

http://docs.pylonsproject.org/projects/pyramid/zh-CN/1.3-branch/narr/templates.html#using-templates-direct

设置视图时,必须删除renderer参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM