Python 如何让Django测试客户端向不同的子域发送请求
我正在使用django子域项目在django项目中启用子域,这很好 然而,在编写测试时,我不知道如何让Django测试客户端向不同的子域发送请求 它只向根域发送请求,即使我使用Python 如何让Django测试客户端向不同的子域发送请求,python,django,subdomain,django-urls,django-testing,Python,Django,Subdomain,Django Urls,Django Testing,我正在使用django子域项目在django项目中启用子域,这很好 然而,在编写测试时,我不知道如何让Django测试客户端向不同的子域发送请求 它只向根域发送请求,即使我使用@override\u settings将root\u URLCONF更改为指向子域\u URLCONF中的一个条目。但是,如果我直接将settings.py中的ROOT_URLCONF更改为所需的子域URLCONF,这显然是一个不可接受的解决方案,那么它是有效的 还尝试对Django TestCase类进行子类化,并将“
@override\u settings
将root\u URLCONF更改为指向子域\u URLCONF中的一个条目。但是,如果我直接将settings.py
中的ROOT_URLCONF更改为所需的子域URLCONF,这显然是一个不可接受的解决方案,那么它是有效的
还尝试对Django TestCase类进行子类化,并将“url”字段设置为子域urlconf,但请求仍将转到根目录,导致404
最后,我尝试使用subdomains.utils.reverse
获得一个绝对url,但测试客户机根本不接受
这个问题可能与我有关。有人在评论中提到,黑客已经被用来解决这个问题。请阐明上述黑客行为或更好的解决方案,以解决这个肯定并不罕见的用例。什么是
子域_reverse
功能?它返回的URL的格式是什么?我尝试过各种各样的URL黑客攻击,但都没用,所以如果这能奏效,我会感到惊讶。我正在使用它进行子域管理
HTTP_HOST = 'rede.example.com'
class TestIndexView(TestCase):
def setUp(self):
self.url = subdomain_reverse('network_index', subdomain='rede')
def test_render(self):
response = self.client.get(self.url, HTTP_HOST=HTTP_HOST)
self.assertEqual(response.status_code, 200)