【问题标题】:Decorator to map view functions to endpoint separate from defining url rule装饰器将视图函数映射到与定义 url 规则分开的端点
【发布时间】:2016-02-02 09:51:26
【问题描述】:

我想通过调用我的 decorate 来构建一个 view_functions 字典!

view_functions = {}

def route(rule):
    def _route(function_name):
        def __route(function_arg):
            view_functions[rule] = function_name
        return __route
    return _route

if __name__ == '__main__':
    @route('hey')
    def hello(arg):
        print 'hello ',arg

    #hello('ap') if you have no call the function directly,you will got view_function have no key 'hey' ...That's my question! 
    view_functions['hey']('pp')

我怎样才能简单地将装饰放在 view_function 上方(就像 Flask 一样),然后我的 view_functions 字典会自动填充?

【问题讨论】:

    标签: python flask decorator


    【解决方案1】:

    您的 dict 分配处于错误的级别。它需要在 outer 之一,在定义时调用。在这种情况下,内部函数实际上不需要做任何事情(当然,除了调用修饰函数)。

    view_functions = {}
    def route(rule):
        def _route(function_name):
            view_functions[rule] = function_name
            def __route(function_arg):
                function_name(function_arg)
            return __route
        return _route
    

    还要注意您对 hello 的定义不应在 if __name__ 块内。

    【讨论】:

      猜你喜欢
      • 2015-11-01
      • 1970-01-01
      • 2017-05-02
      • 2017-10-30
      • 2014-08-25
      • 2014-06-07
      • 2013-02-06
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多