Django测试总是返回301

时间:2014-01-19 09:23:00

标签: django unit-testing testing redirect status

我知道这个问题几乎没有相同的帖子,但它们对我没有帮助。我总是在测试中获得301状态:

self.client.get('/')

和此:

self.client.get('/admin/')

返回:

AssertionError: 301 != 200

所有网址都会返回301状态...只有这样才能获得帮助:self.client.get('/', follow=True)

有谁知道问题出在哪里?

5 个答案:

答案 0 :(得分:8)

301是重定向的状态,whitch表示您的get请求首先具有301的响应。 Http头文件包含要重定向到的URL ...

如果您希望跟随请求,则传入follow = True,表示自动触发对重定向网址的另一个请求的方法。 可以有很多重定向。

这是断言测试中的常见错误。

答案 1 :(得分:1)

根网址是否受到登录保护?这肯定是管理员URL的情况,因此除非您已经登录,否则它将重定向到登录页面。如果您使用@login_required保护根视图,这将解释您所看到的内容。

答案 2 :(得分:1)

我遇到了与您描述的相同的错误。

我的 Django 代码是:

response = self.client.get('**/admin**')<br>
self.assertEqual(response.status_code, 200)<br>
AssertionError: 301 != 200

这是我的解决方案:
选项 1

self.client.get('**/admin/**')<br>

选项 2

self.client.get('**/admin**', follow=True) 

答案 3 :(得分:0)

这是我解决的方法:

    def test_index_status_code(self):
        response = self.client.get('/backstage')
        self.assertRedirects(response, '/backstage/', status_code=301, target_status_code=200)

答案 4 :(得分:0)

打开浏览器,查看是否在尾部使用反斜杠引起了此问题。