确保Pyramid应用程序中的每个视图都使用自定义装饰器进行装饰

时间:2015-04-03 12:31:07

标签: python web pyramid pylons

Per 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进行修饰。有没有办法确保在实时应用程序或测试阶段确实如此?

1 个答案:

答案 0 :(得分:0)

我认为更好的方法是:使用基于类的视图,并从具有您尝试添加的工具的同一基类继承所有视图。

但是,如果您想要在应用程序中装饰所有视图,那么方法将遵循

  • 创建一个scan()方法,该方法将Python模块作为输入并读取,有点类似于Pyramid自己的扫描

  • 如果您的scan()找到了一个视图函数签名,它会修饰该函数并就地替换模块中的原始函数

  • 在字母Pyramid本身扫描模块之前调用您的自定义扫描,以便Pyramid将选择“固定”功能