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

Django test client发起请求时Token认证失败问题求助

问题原因及解决方案

你遇到的问题是Django TestClient的请求头传递规则和常规HTTP客户端不同导致的,具体修复方案如下:

方案1:按Django TestClient规则修改请求头键名

Django TestClient 要求自定义HTTP请求头必须满足两个规则:

  • 键名添加HTTP_前缀
  • 键名中的横线替换为下划线
    你原本的代码直接传Authorization键不符合规则,所以请求头没有被正确识别,修改后的代码如下:
headers = {'HTTP_AUTHORIZATION': 'Token ' + token}
response = client.get('/api/v1/users/auth/user/', **headers)

方案2:使用DRF测试客户端自带的凭证设置方法(适用于Django REST Framework场景)

如果你用的是DRF的APIClient,可以直接调用credentials方法全局设置认证凭证,不需要每次请求手动传头:

from rest_framework.test import APIClient

client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Token ' + token)
response = client.get('/api/v1/users/auth/user/')

验证排查点

如果修改后仍有问题,可以打印请求的META信息确认头是否正确传入:

print(response.wsgi_request.META.get('HTTP_AUTHORIZATION'))

能正常打印出你的Token值就说明请求头已经正确传递了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:15:03