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

DRF测试APIClient添加带连字符自定义请求头报错求助

DRF APIClient添加带连字符自定义请求头的解决办法

方案一:全局设置请求头(所有请求生效)

APIClient自带的defaults字典可以直接存储请求头,完全支持带连字符的键名,不受Python变量命名规则限制:

from rest_framework.test import APIClient

client = APIClient()
# 直接往defaults里添加自定义请求头
client.defaults['HEADER-WITH-HYPHEN'] = '你的自定义值'

# 后续发起的所有请求都会自动带上这个头
response = client.get('/api/test/')

方案二:单次请求临时传入请求头

如果只需要某一次请求携带自定义头,无需全局配置,直接在请求方法中传入headers参数即可:

response = client.get(
    '/api/test/',
    headers={'HEADER-WITH-HYPHEN': '你的自定义值'}
)

为什么credentials方法不可用?

别再用credentials()处理这个需求了——这个方法是专门用来设置认证信息(比如token、cookie)的,它的参数是关键字参数,带连字符的名称不符合Python标识符规则,自然会触发语法错误,它从设计上就不是用来设置任意自定义请求头的工具。

关于RequestsClient的替代思路

如果非要用RequestsClient,可以搭配DRF的LiveServerTestCase使用,它会启动一个临时的真实测试服务器,这样就能使用完整的HTTP URL访问接口了,但这种测试方式速度会慢一些,优先推荐前面两种APIClient的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:01