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

Django测试:如何获取响应数据中的Token用于后续操作

解决获取登录响应中token的问题

我刚看了你的问题,你遇到的核心问题是Django REST Framework测试响应对象本身没有直接的data属性,得先把响应内容解析成Python字典才能拿到token。

修改后的测试代码

def test_login_user(self):
    client = APIClient()
    url = reverse('rest_login')
    data = {
        'username': 'test',
        'password': 'Welcome2'
    }
    response = client.post(url, data)
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    
    # 关键步骤:将响应内容解析为JSON字典
    response_data = response.json()
    # 提取token值,用get方法可以避免键不存在时报错,更安全
    token = response_data.get('token')
    
    # 示例:用token做后续认证操作
    client.credentials(HTTP_AUTHORIZATION=f'Token {token}')
    # 这里可以添加后续需要认证的测试请求,比如获取用户信息、修改资料等
    
    client.logout()

为什么原来的方式不行?

当你通过APIClient发送请求后,返回的response是Django的HttpResponse子类对象,它的响应体是JSON格式的字符串,而不是直接的字典。你需要调用.json()方法把这个字符串转换成Python字典,之后就能通过键名(比如'token')获取对应的值了。

另外提个小细节:你先实例化了client = APIClient(),但后面用了self.client.post,如果你的测试类继承了APITestCase,self.client已经是APIClient实例,两者选一个用就行,避免代码混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:45:21