小码问答,有问必答!

View function mapping is overwriting an existing endpoint function: wrapper

Python

收藏

1个回答

我要回答

  • author
    牛叔叔 2020-12-23 15:49

    是Flask在视图映射的时候,不同的路径映射到了相同的方法所致。

    可能的情况是用了装饰器,但是装饰器返回的方法都是 wrapper,这个时候Flask认为wrapper方法已经映射过了,所以会报异常。


    可以修改装饰器,使用@wraps修饰,让返回的装饰器用被装饰的方法的名字,Flask就不会报错了。

    from  functools import wraps
    
    def admin_filter(func):
        @wraps(func)#让这个修饰器的名字和被修饰的方法名字一致
        def wrapper():
            if 'user' not in session:
                return redirect("http://wanmait.com/")
            return func()
        return wrapper