You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask接口报错:user_delete_connector()收到意外关键字参数'id'

解决Flask Delete接口参数传递报错问题

错误原因

报错user_delete_connector() got an unexpected keyword argument 'id'的核心原因是你的auth.token_auth()装饰器没有正确传递路由中的关键字参数到视图函数。Flask会将路由中定义的<id>作为关键字参数传递给视图函数,但如果认证装饰器的包装逻辑没有传递这些关键字参数,就会触发该错误。

解决方案

方案1:修复认证装饰器的参数传递逻辑

检查auth.token_auth()装饰器的实现,确保其内部包装函数接收并传递所有参数(位置参数和关键字参数)。正确的装饰器示例如下:

from functools import wraps
from flask import request

def token_auth():
    def decorator(view_func):
        @wraps(view_func)
        def wrapped_view(*args, **kwargs):
            # 这里添加你的token认证逻辑
            # 例如:验证请求头中的token有效性
            # ...
            
            # 调用原视图函数时,必须传递所有接收的参数
            return view_func(*args, **kwargs)
        return wrapped_view
    return decorator

方案2:修改视图函数的参数接收方式(无需修改装饰器)

如果无法调整认证装饰器的代码,可以直接从Flask的request对象中获取路由参数,或者用关键字参数集合接收:

方式A:从request对象获取参数

from flask import request

@app.route('/users/delete/<id>', methods=['DELETE'])
@auth.token_auth()
def user_delete_connector():
    user_id = request.view_args.get('id')
    return obj.user_delete_model(user_id)

方式B:用**kwargs接收参数

@app.route('/users/delete/<id>', methods=['DELETE'])
@auth.token_auth()
def user_delete_connector(**kwargs):
    return obj.user_delete_model(kwargs['id'])

方案3:强制使用关键字参数传递(可选)

修改视图函数定义,仅接收关键字参数(Python 3+支持),确保参数传递匹配:

@app.route('/users/delete/<id>', methods=['DELETE'])
@auth.token_auth()
def user_delete_connector(*, id):
    return obj.user_delete_model(id)

内容的提问来源于stack exchange,提问作者Mohit Bhatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:57:44