如何将 header 添加到 Django RequestFactory 请求?

How do I add a header to a Django RequestFactory request?

要使用 header 手动发送 GET 请求,我使用 curl:

curl http://example.com/endpoint -H "Key: Value"

我想编写一个单元测试来发出包含 header 的请求(使用 django.test.RequestFactory)。如何在请求中添加 header?

为清楚起见,下面是我喜欢能够做的事情的示例,尽管我在下面写的是不是[=25] =] 有效代码,因为 RequestFactory.get() 没有 headers 参数:

from django.test import TestCase, RequestFactory


class TestClassForMyDjangoApp(TestCase):
    def test_for_my_app(self):
        factory = RequestFactory()
        
        my_header = dict(key=value, another_key=another_value)
        factory.get('/endpoint/', headers=my_header)

您需要将 HTTP_* kwargs 传递给 get(...)(或任何有效的 http 方法)以在请求中传递自定义 HTTP header。


class TestClassForMyDjangoApp(TestCase):
    def test_for_my_app(self):
        factory = RequestFactory()
        <b>my_header = {"HTTP_CUSTOM_KEY": "VALUE"}</b>
        request = factory.get("/some/url/", <b>**my_header</b>)
        print(request.headers) # {'Custom-Key': 'VALUE'}