gpt4 book ai didi

django - “WSGIRequest”对象没有属性 'data'

转载 作者:行者123 更新时间:2023-12-04 14:27:16 31 4
gpt4 key购买 nike

我在发布到API时遇到了麻烦,无法完全弄清该错误指的是什么。如果重要的话,我使用的是Django REST,并包含了回溯。

if (repeat == false) {
post_data = {'User': usernameInput}
$.ajax({
type: 'POST',
url: '/0/addUser',
data: post_data,
async: true
})
}

class AddUser(APIView):
def post(self, request, format = None):
serializer = UserSerializer(data=request.data)
if serializer.isvalid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)


Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
57. return view_func(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/views/generic/base.py" in view
69. return self.dispatch(request, *args, **kwargs)
File "/Library/Python/2.7/site-packages/rest_framework/views.py" in dispatch
403. response = self.handle_exception(exc)
File "/Library/Python/2.7/site-packages/rest_framework/views.py" in dispatch
400. response = handler(request, *args, **kwargs)
File "/Users/rae/Desktop/112/djangotemplate/notes/views.py" in post
23. serializer = UserSerializer(data=request.data)
File "/Library/Python/2.7/site-packages/rest_framework/request.py" in __getattr__
436. return getattr(self._request, attr)

最佳答案

Django REST Framework具有自己的Request对象,该对象包装了Django传入的HttpRequest对象,并添加了一些其他功能(例如自定义呈现和另一个身份验证层)。如果在Request对象上访问了不存在的任何属性,它将自动将其代理到基础HttpRequest,因此通常您不会注意到它们之间的区别。

在DRF 2.x中,Request属性具有DATAFILES属性,这些属性存储传入的数据以及已检测到的任何文件。它们在DRF 3.0中合并,并用单个data属性代替。随着DRF 3.0的发布,所有文档现在都反射(reflect)了新的Request.data属性。

您似乎正在使用Django REST Framework 2.x,但是您正在尝试访问DRF 3.0中引入的新属性。由于它在Request对象上不存在,因此正在向下代理到HttpRequest对象,在该对象中也找不到它。

关于django - “WSGIRequest”对象没有属性 'data',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27287852/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com