Django Ninja Extra 中为何出现 'TypeError: got multiple values for argument 'request'' 错误?

我正在使用 Django Ninja Extra 编写一个 API 控制器,以下是我的代码:

@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, request):
        data = userModels.UserCollection.objects.filter(user=request.auth)
        return data

当我运行这段代码时,出现了如下错误:

TypeError: User.get_user_colls() got multiple values for argument 'request'
---------------------------------
"GET - User[get_user_colls] /api/v1/user/colls" ("User.get_user_colls() got multiple values for argument 'request'",)
User.get_user_colls() got multiple values for argument 'request'
Traceback (most recent call last):
  File "C:\Users\Administrator\PycharmProjects\lmew\venv\lib\site-packages\ninja_extra\operation.py", line 214, in run
    result = self.view_func(request, **ctx.kwargs)
  File "C:\Users\Administrator\PycharmProjects\lmew\venv\lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 97, in as_view
    result = self.route.view_func(
TypeError: User.get_user_colls() got multiple values for argument 'request'
Internal Server Error: /api/v1/user/colls

我不太明白为什么会出现这个错误,request 参数应该只会被传入一次。我尝试查看了 Django Ninja Extra 的文档,但没有找到相关的解决方案。

阅读 120
1 个回答
@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):  # 移除 request 参数
        # 通过 self.context.request 获取请求对象
        request = self.context.request
        data = userModels.UserCollection.objects.filter(user=request.auth)
        return data

或者:

@api_controller('', tags=['User'], auth=NOT_SET, permissions=[])
class User:
    @paginate(PageNumberPagination, page_size=10)
    @http_get('/user/colls', response=List[schemas.UserCollsOut], auth=JWTAuth())
    def get_user_colls(self, request):
        data = userModels.UserCollection.objects.filter(user=request.auth)
        return data
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进