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
相关产品推荐
相关产品推荐

