我正在使用django-subdomains项目在我的django项目中启用子域,这项工作正常。
但是,在编写测试时,我无法弄清楚如何让Django测试客户端向不同的子域发送请求。
它仅向根域发送请求,即使我将ROOT_URLCONF更改为指向带有@override_settings
的SUBDOMAIN_URLCONFS中的一个条目。但是如果我直接将settings.py
中的ROOT_URLCONF更改为所需的子域urlconf,它就可以工作,这显然是一个不可接受的解决方案。
还试图继承Django TestCase类并将“url”字段设置为子域urlconf,但请求仍然是root,导致404.
最后,我尝试使用subdomains.utils.reverse
获取绝对网址,但测试客户端根本不接受此操作。
此问题可能与Django Test Client and Subdomains有关。有人在评论中提到黑客已被用来解决这个问题。请阐明所说的黑客,甚至更好,一个解决这个肯定不那么罕见的用例的正确解决方案。
答案 0 :(得分:1)
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)