确保 Pyramid 应用程序中的每个视图都使用自定义装饰器进行装饰
Ensuring every view in Pyramid app is decorated with custom decorator
根据 http://pyramid-cookbook.readthedocs.org/en/latest/views/chaining_decorators.html 我可以装饰金字塔视图:
@view_config(decorator=a_special_decorator, renderer='json')
def myview(request):
return {'a':1}
好的,但我需要确保 Pyramid 应用程序中的 每个 视图都装饰有 a_special_decorator
。有没有办法确保,无论是在实时应用程序还是在测试阶段,都是如此?
我认为更好的方法是:使用基于 class 的视图并从具有您要添加的设施的同一基础 class 继承所有视图。
但是,如果您想装饰应用程序中的所有视图,则方法如下
创建一个scan()
方法,将Python模块作为输入并通读,有点类似于Pyramid自带的扫描
如果您的 scan()
找到一个视图函数签名,它会装饰该函数并就地替换模块中的原始函数
在 letter Pyramid 本身扫描模块之前调用您的自定义扫描,以便 Pyramid 将获取 "fixed" 函数
根据 http://pyramid-cookbook.readthedocs.org/en/latest/views/chaining_decorators.html 我可以装饰金字塔视图:
@view_config(decorator=a_special_decorator, renderer='json')
def myview(request):
return {'a':1}
好的,但我需要确保 Pyramid 应用程序中的 每个 视图都装饰有 a_special_decorator
。有没有办法确保,无论是在实时应用程序还是在测试阶段,都是如此?
我认为更好的方法是:使用基于 class 的视图并从具有您要添加的设施的同一基础 class 继承所有视图。
但是,如果您想装饰应用程序中的所有视图,则方法如下
创建一个
scan()
方法,将Python模块作为输入并通读,有点类似于Pyramid自带的扫描如果您的
scan()
找到一个视图函数签名,它会装饰该函数并就地替换模块中的原始函数在 letter Pyramid 本身扫描模块之前调用您的自定义扫描,以便 Pyramid 将获取 "fixed" 函数