我在使用flask时,想要一个装饰器,对多个函数进行封装,但是出现了一下的问题。
AssertionError: View function mapping is overwriting an existing endpoint function: inner
AssertionError:视图函数映射覆盖现有端点函数:inner
flask要求您将单个“视图函数”与“端点”关联起来,调用两次装饰器,这将创建两个不同的函数(功能完全相同,但内存签名不同)。所以解决的方法如下:
方法一
def loginValid(fun):
def inner(*args,**kwargs):
username = request.cookies.get("username")
id = request.cookies.get('user_id')
session_user = session.get("username")
if username and id and session_user:
if username == session_user:
return fun(*args, **kwargs)
return redirect("/login/")
inner.__name__ = fun.__name__
return inner
方法二【最佳】
在每个使用装饰器的的路由上,使用断点。
方法三
这个问题是与flask1.0有关,如果你有相同的版本,然后做以下来摆脱这个
sudo pip uninstall flask
sudo pip install flask=0.9
方法四
这个方法也是通过修改版本,来解决这个问题
D:\Anaconda\envs\FlaskPath\lib\site-packages\flask\app.py
修改配置文件796