Django:Client()get/post-response是否有一个指示最终URL的属性



我发现了一些与URL重定向测试有关的问题,看看URL重定向是否位于所需的目标URL。不过,我想知道,是否有一个属性表明最终的目标URL是什么

c = Client()
r = c.get('/sr/portfolios/', follow=True)
r.final_url # something like this?

似乎重定向链只告诉你被重定向通过的URL,但不是那些你最终登陆的URL

r.redirect_chain
# [('http://testserver/sr/?next=/sr/portfolios/', 302)]

我发现了相关(但不完全相同)的主题:Django:测试页面是否重定向到了所需的url

为了突出显示解决方案,您可以使用r.request['PATH_INFO']获得最终url。CCD_ 2也起作用。

我相信还有其他方法可以做到这一点,但一个简单的in检查就足够了吗?

def test_final_url(self):
    final_url = reverse('your_url_name')
    found = False
    for item in r.redirect_chain:
        if final_url in item[0]:
            found = True
            break
    self.assertTrue(found)

由于Python列表没有保证的顺序,我不确定查看r.redirect_chain[-1][0]是否100%安全,但它可能是最快的解决方案。

相关内容

最新更新