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

如何为Django框架的RequestFactory请求添加自定义请求头?

Django RequestFactory添加自定义请求头方法

Django 的 RequestFactory 各类HTTP请求方法(get/post/put等)没有单独的headers参数,所有自定义请求头需要按照WSGI规范转换键名后,直接作为关键字参数传入,或者整合成字典后解包传入。

请求头键名转换规则

  • 自定义请求头的键名全部转为大写
  • 键名中的横杠-替换为下划线_
  • 键名前添加HTTP_前缀
  • 特殊标准头CONTENT_TYPE、CONTENT_LENGTH不需要加HTTP_前缀

代码示例

单请求头场景

对应你给出的curl请求curl http://example.com/endpoint -H "Key: Value",构造代码如下:

from django.test import TestCase, RequestFactory

class TestClassForMyDjangoApp(TestCase):
    def test_for_my_app(self):
        factory = RequestFactory()
        # 按规则转换头名后直接作为参数传入
        request = factory.get('/endpoint/', HTTP_KEY="Value")

多请求头场景

如果有多个自定义请求头,可以先构造符合格式的字典,再解包传入:

from django.test import TestCase, RequestFactory

class TestClassForMyDjangoApp(TestCase):
    def test_for_my_app(self):
        factory = RequestFactory()
        # 提前按规则转换请求头的键名
        my_headers = {
            "HTTP_KEY": "value",
            "HTTP_ANOTHER_KEY": "another_value"
        }
        # 解包字典传入get方法
        request = factory.get('/endpoint/', **my_headers)

你可以通过request.META属性验证请求头是否传入成功,比如request.META.get("HTTP_KEY")即可取出对应头的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:39:02