我知道这个问题几乎没有相同的帖子,但它们对我没有帮助。我总是在测试中获得301状态:
self.client.get('/')
和此:
self.client.get('/admin/')
返回:
AssertionError: 301 != 200
所有网址都会返回301状态...只有这样才能获得帮助:self.client.get('/', follow=True)
有谁知道问题出在哪里?
答案 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)
打开浏览器,查看是否在尾部使用反斜杠引起了此问题。