python - 使用相同的装饰器路由到 view_func "flask"

标签 python python-2.7 flask decorator

假设我有这条路线:

app.add_url_rule('/',
                  view_func=index,
                  methods=['GET'])

app.add_url_rule('login',
                  view_func=login,
                  methods=['GET', 'POST'])

@validate_access()
def index():
    #......

@validate_access()
def login():
    #......

我有 2 个具有相同装饰器“@validate_access”的端点。 当我运行这段代码时,我得到了

AssertionError: View function mapping is overwriting an existing endpoint function:    wrapperAssertionError: View function mapping is overwriting an existing endpoint function: wrapper

不知道是不是bug。但是,如果有解决方案,请通知我。

谢谢 :)

最佳答案

如果您不向add_url_ruleroute 提供endpoint,方法的名称将用作端点。发生的事情是规则是用包装函数的名称创建的,而不是装饰函数,可能是因为你没有使用 functools.wraps

from functools import wraps
def my_decorator(f):
    @wraps(f)
    def wrapper(*args, **kwds):
        return f(*args, **kwds)
    return wrapper

关于python - 使用相同的装饰器路由到 view_func "flask",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540754/

相关文章:

python - 如何在Python中使用列表理解

python - 如何在 Pygame 中获取用户的文本输入?

python - 如何使用 Odoo 12 中看板 View 的 default_group_by 字段选择对位置阶段进行排序

python - 在同一脚本(python)中使用套接字服务器和 flask 网络服务器时地址已在使用中的错误

python - 在 Flask 中运行 Fabric 命令会阻止请求

python - 如何从 Pandas 中的 groupby 对象中选择不同的行

Python-从txt创建数组

python - 在 Python 中将属性添加到类时执行方法

python - 在Python中打包大浮点值

python - 无法在 Flask 中使用 FormData() 和 jQuery 处理文件上传