【问题标题】:How to make Django test client send requests to different subdomains如何让 Django 测试客户端向不同的子域发送请求
【发布时间】:2014-03-15 10:30:45
【问题描述】:

我正在使用 django-subdomains 项目在我的 django 项目中启用子域,效果很好。

但是,在编写测试时,我无法弄清楚如何让 Django 测试客户端向不同的子域发送请求。

即使我将 ROOT_URLCONF 更改为使用@override_settings 指向 SUBDOMAIN_URLCONFS 中的条目之一,它也只会向根域发送请求。但是如果我直接把settings.py中的ROOT_URLCONF改成想要的子域urlconf就可以了,这显然是不可接受的方案。

还尝试对 Django TestCase 类进行子类化,并将“url”字段设置为子域 urlconf,但请求仍然要 root,导致 404。

最后我尝试使用subdomains.utils.reverse获取绝对url,但是测试客户端根本不接受这个。

这个问题可能与Django Test Client and Subdomains有关。有人在评论中提到,黑客已经被用来解决这个问题。请阐明所说的黑客甚至更好的解决方案,以解决这个肯定不那么不常见的用例。

【问题讨论】:

    标签: python django subdomain django-urls django-testing


    【解决方案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)
    

    【讨论】:

    • subdomain_reverse 函数是什么?它返回的 URL 格式是什么?我尝试了各种 URL 黑客攻击都无济于事,所以如果这有效,我会感到惊讶。
    • 我正在使用django-subdomains.readthedocs.org/en/latest 进行子域管理
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    相关资源
    最近更新 更多