关于解决Flask中的视图函数覆盖问题 AssertionError

本文介绍了在Flask开发中遇到的视图函数覆盖问题,详细阐述了导致AssertionError的原因,并提供了三种解决方案:1) 使用functools模块的@wraps装饰器;2) 为装饰器添加断点设置inner._name_;3) 利用flask的endpoint参数明确区分端点。这些方法有助于避免装饰器重复使用造成的冲突。

**

关于解决Flask中装饰器重复使用导致的视图函数覆盖问题

**

在编写Flask项目时,你可能会使用到装饰器去装饰多个视图函数,会导致:AssertionError:视图函数映射覆盖现有端点函数inner 的问题出现;

**

. 报错信息

**
在这里插入图片描述
**


原因

Flask要求您将单个“视图函数”与“端点”关联起来,调用多次装饰器,这就意味着将创建多个不同的函数(功能完全相同,但内存签名不同)。说白了,其实就是多个inner冲突了。


解决办法

**

  • 方法一******使用 functools 模块
    导入::import functools,在装饰器中添加 @wraps()
    eg:在这里插入图片描述
    :这个方法利用的是装饰器的修复技术,返回的结果是每个函数的名字。如果不加 functools 这个装饰器的话,每个函数都是 inner 用来区分每个 inner 。<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值