首页 > 其他分享 >flask 装饰器 AssertionError: View function mapping is overwriting an existing endpoint function

flask 装饰器 AssertionError: View function mapping is overwriting an existing endpoint function

时间:2024-04-04 22:44:07浏览次数:19  
标签:function AssertionError endpoint 函数 inner __ 装饰

1 问题描述

写了一个登陆认证装饰器, 部分试图,只有用户登陆才能访问

def login_wrapper(func):
    def inner(*args, **kwargs):
        """
        判断是否登陆
        若是
            进入视图函数
        否则
            重定向到登陆页面
        """
        if IS_LOGIN['is_login']:
            res = func(*args, **kwargs)
            return res
        return redirect('/login')

    return inner

 

 

启动项目后遇到如下报错:

   AssertionError: View function mapping is overwriting an existing endpoint function: inner

 

2 报错重现

原来如果把函数名写重,就会导致出现该报错

 

 

但是这里视图函数名并没有问题,为什么也出现了这个问题?

 

查资料后得知,是 装饰器 出现了问题!

经过 装饰器 装饰之后的函数,它们的 __name__ 已经从原来的函数名变成 inner,也就是变成了装饰器内部的函数名称

我们可以通过打印函数的 __name__ 看到这一结果:

 

3 解决

1) 给inner._ _name_ _设置唯一值

 

2) 路由中给参数endpoint设置唯一值

 

标签:function,AssertionError,endpoint,函数,inner,__,装饰
From: https://www.cnblogs.com/tslam/p/18115077

相关文章

  • CodeForces 1942F Farmer John's Favorite Function
    洛谷传送门CF传送门考虑一些复杂度带根号的做法。考虑分块,对于一个块,我们需要处理出一个数经过这个块会变成哪个数。以下假设块长\(\ge10\)(最后一个块块长可能\(<10\),暴力处理即可)。观察这个递推式\(f_i=\left\lfloor\sqrt{f_{i-1}+a_i}\right\rfloor\),发现对于一......
  • Anu Has a Function
    题目链接CodeforcesRound618(Div.1)A.AnuHasaFunction思路:我们把每个二进制位上的111看作是集合的不同的元素,二进制的位运算(按位与,按位或,按位异或)其实可以......
  • Javascript 变量类型 Object 和 Function 讲解
    在JavaScript中,Object 和 Function 是两种非常重要的类型,但它们之间也有一些关键的区别和联系。Object类型在JavaScript中,几乎所有的事物都是对象,包括原始值(如数字和字符串)的包装对象、数组、函数,以及使用字面量语法或构造函数创建的对象实例。对象是一个复合值,它可以包......
  • 【Azure Function & Application Insights】在Azure Function的日志中,发现DrainMode m
    问题描述ApplicaitonInsights收集了AzureFunction的日志,定期发现有”DrainModemodeenabledTraces“。DrainMode是什么意思呢? 问题解答排出模式(Drainmode) 属于FunctionApp 缩放机制中的一部分,当后台检测到FunctionApp请求量不再需要当前的instance时会停止对......
  • vue xxx.find is not a function;
    错误:1.后端获取数据集合,存到 vuex store 中和本地 window.localStorage;2.因为要解决刷新丢失问题在routeconfig中路由拦截重新 拿到本地数据window.localStorage 保存到store中;3.界面刷新报错:vuexxx.findisnotafunction分析:1.xxx类型确实不是数组;......
  • 【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大
    问题描述在FunctionApp中配置了无代码模式的ApplicationInsights,但有时候发现,超过1MB的文件上传/下载操作成功。但是在ApplicationInsights中,却没有发现请求日志?这是一种什么情况呢? 问题解答ApplicationInsights 是具有采样功能的,当传入执行的速率超过指定的阈值时,Appl......
  • 当你遇到layer.alert is not a function怎么办
    下面我们来解决layer.alertisnotafunction的方法之一,下面来看一个GIS的例子,在登录之后,地图是加载出来的,当你点击区域定位是出现layer.alertisnotafunction。而我们的代码是没有bug,但是它还是报错。那是因为我们的url的地图出问题了,这是因为切图后的数据没有我们要的数......
  • std::function
    std::functional 是C++标准库中的一个模板类,它是对可调用对象的一种通用包装器。std::functional 允许你将任何可调用对象(包括函数、函数对象、lambda表达式、以及其他 std::functional 对象)当作一个统一的对象来处理。它通常与C++的算法库、容器库以及某些需要可调用对......
  • vuex.esm.js:135 Uncaught Error: [vuex] getters should be function but “getters.
    报错vuex.esm.js:135UncaughtError:[vuex]gettersshouldbefunctionbut"getters.mode"inmodule"userModule"is"dark".atassert(vuex.esm.js:135:1)原因:在使用vuex的moulds时index.js中已创建了一个vue实例newVuex.Store,在模块文件中又再创建了一个,导致报......
  • 【平台开发】MTK6833——add harware command queue function in lk
    CQE实现主要步骤(参考协议)Hostsystem结构commandqueue任务结构:2.TheoryofOperation(操作理论)init(初始化)初始化,enableCQ配置CQCFGTaskDescriptorsize配置CQTDLBA(CommandQueuingTaskDescriptorListBaseAddress)和CQTDLBAU(CommandQueuingTaskDe......