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

Django调用request.data.object报'dict'对象无object属性如何解决?

错误原因

DRF 的 request.data 会自动根据请求的 Content-Type 解析请求体数据,JSON请求、表单请求等绝大多数场景下,解析完成后直接返回 Python 字典类型,不存在 object 属性。你代码中调用 data.object.get() 的写法不符合 DRF 的 request.data 使用规范,因此触发属性不存在的报错。

修复方案

直接从 request.data 字典中读取对应键值即可,修改两行参数提取代码,去掉 .object 调用即可,修改后完整代码如下:

class UserDetailsAPI(APIView):
    def post(self, request, *args, **kwargs):
        print(request.content_type)
        data=request.data
        # 去掉.object调用,直接从字典取key
        user = data.get('user') or request.user
        token = data.get('access')
        response_data = {
            'access': token,
            'user': UserSer(user).data
        }
        response = Response(response_data, status=status.HTTP_200_OK)
        if api_settings.JWT_AUTH_COOKIE:
            expiration = (datetime.utcnow() +
                        api_settings.JWT_EXPIRATION_DELTA)
            response.set_cookie(api_settings.JWT_AUTH_COOKIE,
                                response.data['access'],
                                expires=expiration,
                                httponly=True)
        return response
补充说明

如果你的请求确实有嵌套结构,user、access 字段是嵌套在某个 object 字段下的,那你需要先判断 object 字段是否存在,再取值,写法如下:

user = data.get('object', {}).get('user') or request.user
token = data.get('object', {}).get('access')

内容的提问来源于stack exchange,提问作者Sparsh Kandpal 4-Yr BTech Cera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 10:27:03