'WSGIRequest'对象没有属性'data'

 手机用户2502905797 发布于 2022-12-07 18:56

我在发布到我的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对象,它包装HttpRequestDjango传入的对象,并添加了一些额外的功能(如自定义渲染和另一个身份验证层).如果在Request不存在的对象上访问任何属性,它将自动将其代理到底层HttpRequest,因此通常您不会注意到差异.

在DRF 2.x中,Request属性具有DATAFILES属性,用于存储传入的数据以及已检测到的任何文件.这些在DRF 3.0中合并,并替换为单一data属性.随着DRF 3.0的发布,所有文档现在都反映了新Request.data属性.

您似乎正在使用Django REST Framework 2.x,但您正在尝试访问DRF 3.0中引入的新属性.因为它不存在于Request对象上,所以它被代理到HttpRequest对象,在那里它也没有被找到.

1 个回答
  • Django REST Framework有自己的Request对象,它包装HttpRequestDjango传入的对象,并添加了一些额外的功能(如自定义渲染和另一个身份验证层).如果在Request不存在的对象上访问任何属性,它将自动将其代理到底层HttpRequest,因此通常您不会注意到差异.

    在DRF 2.x中,Request属性具有DATAFILES属性,用于存储传入的数据以及已检测到的任何文件.这些在DRF 3.0中合并,并替换为单一data属性.随着DRF 3.0的发布,所有文档现在都反映了新Request.data属性.

    您似乎正在使用Django REST Framework 2.x,但您正在尝试访问DRF 3.0中引入的新属性.因为它不存在于Request对象上,所以它被代理到HttpRequest对象,在那里它也没有被找到.

    2022-12-11 02:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有