码迷,mamicode.com
首页 > 其他好文 > 详细

Flask 之装饰器有关

时间:2019-01-07 22:42:12      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:一句话   python   ping   函数   tin   就是   cti   运行   assert   

 - 先记住一句话:自定义python装饰器时一定要记住使用@functools.wraps(func)修饰wrapper

- 在Flask中使用装饰器遇到AssertionError: View function mapping is overwriting an existing...

 - 报错的大概意思就是存在相同的view,在flask中,如果定义了两个相同函数名的view,就会报这种报这种错误,例如:

技术分享图片

 

 - 但是上例中的两个函数名分别是index和course,是不相同的,为什么会报这种错?

 - 我经过查找发现,这是因为python装饰器本质上就是函数的链式调用

 - 对于app.route这个方法而言,传入的方法都是external,而不是更深一层的index和course所以会报上面的错误

解决方法

在装饰external中添加@wraps(func)就可以正常运行了

技术分享图片

@functools.wraps(func)的作用就是保留原有函数的名称和docstring

Flask 之装饰器有关

标签:一句话   python   ping   函数   tin   就是   cti   运行   assert   

原文地址:https://www.cnblogs.com/wqzn/p/10235791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!