[英]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
。 您可以在那里从视图中传递渲染器。
设置视图时,必须删除renderer参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.