我在发布到我的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)
Kevin Brown.. 8
Django REST Framework有自己的Request
对象,它包装HttpRequest
Django传入的对象,并添加了一些额外的功能(如自定义渲染和另一个身份验证层).如果在Request
不存在的对象上访问任何属性,它将自动将其代理到底层HttpRequest
,因此通常您不会注意到差异.
在DRF 2.x中,Request
属性具有DATA
和FILES
属性,用于存储传入的数据以及已检测到的任何文件.这些在DRF 3.0中合并,并替换为单一data
属性.随着DRF 3.0的发布,所有文档现在都反映了新Request.data
属性.
您似乎正在使用Django REST Framework 2.x,但您正在尝试访问DRF 3.0中引入的新属性.因为它不存在于Request
对象上,所以它被代理到HttpRequest
对象,在那里它也没有被找到.
Django REST Framework有自己的Request
对象,它包装HttpRequest
Django传入的对象,并添加了一些额外的功能(如自定义渲染和另一个身份验证层).如果在Request
不存在的对象上访问任何属性,它将自动将其代理到底层HttpRequest
,因此通常您不会注意到差异.
在DRF 2.x中,Request
属性具有DATA
和FILES
属性,用于存储传入的数据以及已检测到的任何文件.这些在DRF 3.0中合并,并替换为单一data
属性.随着DRF 3.0的发布,所有文档现在都反映了新Request.data
属性.
您似乎正在使用Django REST Framework 2.x,但您正在尝试访问DRF 3.0中引入的新属性.因为它不存在于Request
对象上,所以它被代理到HttpRequest
对象,在那里它也没有被找到.