2024-10-01 13:31:52 发布
网友
什么是金字塔中模板上下文的等价物?在
金字塔中的IBeforeRender事件与此有关吗?我已经看过了官方文档,但是很难理解IBeforeRender事件到底是什么。在
在我看来,上面的解决方案并没有完全复制挂架模板上下文的行为。如果在Pylons中呈现一个页面请求,并在上下文c中添加一些值a,那么可以在模板中以c.a的形式访问它。但是,如果一个呈现另一个请求,这个键/值将被删除。在
c
a
c.a
上面的金字塔解决方案显示了另一种行为。键/值c.a将保留在模板上下文中。有时,这是不可取的。有什么建议可以弥补这种差异吗?在
相反,如果您希望得到一些“全局包”,可以将变量填充到每个模板,那么您关于IBeforeRender的问题是恰当的。在
from pyramid.events import subscriber from pyramid.events import BeforeRender @subscriber(BeforeRender) def add_global(event): event['name'] = 'Pyramid Developer'
在设置配置器时,还有一种添加全局变量的替代方法。您可以在以下位置查看完整信息:http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/hooks.html#using-the-before-render-event
Pyramid已经在其请求对象上提供了一个tmpl_context,因此您只需订阅一个BeforeRender事件即可将其添加到呈现程序全局参数中:
tmpl_context
BeforeRender
def add_renderer_globals(event): event['c'] = request.tmpl_context event['tmpl_context'] = request.tmpl_context config.add_subscriber(add_renderer_globals, 'pyramid.events.BeforeRender')
从现在起,当您收到请求时,可以在代码中设置参数:
随后,您的模板可能会引用name变量:
name
${ c.name }
在我看来,上面的解决方案并没有完全复制挂架模板上下文的行为。如果在Pylons中呈现一个页面请求,并在上下文
c
中添加一些值a
,那么可以在模板中以c.a
的形式访问它。但是,如果一个呈现另一个请求,这个键/值将被删除。在上面的金字塔解决方案显示了另一种行为。键/值
c.a
将保留在模板上下文中。有时,这是不可取的。有什么建议可以弥补这种差异吗?在相反,如果您希望得到一些“全局包”,可以将变量填充到每个模板,那么您关于IBeforeRender的问题是恰当的。在
在设置配置器时,还有一种添加全局变量的替代方法。您可以在以下位置查看完整信息:http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/hooks.html#using-the-before-render-event
Pyramid已经在其请求对象上提供了一个
tmpl_context
,因此您只需订阅一个BeforeRender
事件即可将其添加到呈现程序全局参数中:从现在起,当您收到请求时,可以在代码中设置参数:
^{2}$随后,您的模板可能会引用
name
变量:相关问题 更多 >
编程相关推荐