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

使用Django Ninja Extra编写API时出现request参数多值传入错误

问题原因与解决方案

错误原因

你遇到的TypeError: User.get_user_colls() got multiple values for argument 'request',核心原因是Django Ninja Extra控制器类的视图方法不需要显式声明request参数——控制器会自动将请求对象注入为实例属性self.request。你在方法参数里声明了request,同时装饰器(@paginate或@http_get)又自动传递了request参数,导致同一个参数被重复传入,引发冲突。

修复后的代码

@api_controller('', tags=['User'], auth=NOT_SET, permissions=[])
class User:
    @http_get('/user/colls', response=List[schemas.UserCollsOut], auth=JWTAuth())
    @paginate(PageNumberPagination, page_size=10)
    def get_user_colls(self):
        data = userModels.UserCollection.objects.filter(user=self.request.auth)
        return data

关键说明

  • 控制器类的视图方法,第一个参数固定为self,无需额外声明request;
  • 通过self.request即可访问请求对象,包括self.request.auth这类属性;
  • 移除方法参数中的request后,装饰器传递的参数就不会和方法参数产生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:03:12