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

DRF中TokenRefreshView返回Response无法访问data属性的Pylint报错问题

DRF刷新令牌后访问Response.data的静态检查报错解决

问题情况

用DRF的TokenRefreshView刷新令牌,调用视图得到响应后,运行时打印类型确认是rest_framework.response.Response,但Pylint/Pylance报错:

Cannot access attribute "data" for class "HttpResponse" Attribute "data" is unknown
(中文翻译:无法访问类"HttpResponse"的属性"data",属性"data"未知)

报错原因

静态代码检查工具(比如Pylance、Pylint)无法准确推断视图函数的返回类型,把DRF的Response误判成了Django原生的HttpResponse——而原生HttpResponse根本没有data属性,所以触发了错误提示。

解决办法

1. 给变量加类型注解

直接指定refresh_response的类型为DRF的Response,让检查工具明确知道这是什么类型:

from rest_framework.response import Response

# 前面的请求创建代码不变
refresh_view = TokenRefreshView.as_view()
refresh_response: Response = refresh_view(new_request)
refresh_response.data["message"] = "Token refresh successful"

2. 用类型断言确认类型

通过assert语句强制告诉检查工具变量的实际类型,同时也能在运行时做一次校验:

from rest_framework.response import Response

# 前面的请求创建代码不变
refresh_view = TokenRefreshView.as_view()
refresh_response = refresh_view(new_request)
assert isinstance(refresh_response, Response)
refresh_response.data["message"] = "Token refresh successful"

3. 安装类型提示库(长期解决方案)

安装DRF的类型 stub 库,提升静态检查工具的类型推断准确性:

pip install djangorestframework-stubs django-stubs

之后Pylance/Pylint就能正确识别DRF相关的类型,不会再出现这类误报。

补充说明

运行时代码其实能正常执行,只是静态检查的类型推断出了问题,上面的方法都能解决这个提示问题。

内容的提问来源于stack exchange,提问作者andy_H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:45:54