我有一个新的Django项目(Version2.2)、一个定制的用户模型和django-allauth来管理用户注册(不是通过社交方式,只是通过电子邮件确认),我正在尝试测试一些受保护的视图。
在测试的setUp方法中,我创建了一个新用户,并创建了一个新的EmailAddress (来自allauth.account.models),并将verified和primary设置为True。
接下来,我尝试使用:self.client.login(username=username, password=password)和True登录,这样到目前为止一切都正常,用户也被记录下来了。
如果我试图查看任何需要登录的内容,我会得到一个301重定向到登录页面。
这是我的密码:
用户在setUp中的创建
username = 'test@test.com'
password = 'testtesttest'
new_user = User.objects.create_user(
username=username,
email=username,
password=password,
)
new_user.save()
new_user.is_active = True
new_user.save()
new_email_address = EmailAddress(
user_id=new_user.id,
email=username,
verified=True,
primary=True,
)
new_email_address.save()登录和中的测试
logged_in = self.client.login(email=username, password=password)
self.assertTrue(logged_in) # and this works as expected现在,如果我试图请求一个需要登录的视图:
response = self.client.get("/protected")我得到了<HttpResponsePermanentRedirect status_code=301, "text/html; charset=utf-8", url="/protected/">
我错过了什么或者做错了什么?
发布于 2020-02-11 16:56:19
您显示的重定向实际上显示了它重定向到的url:url="/protected/"。所以你不会被重定向到登录页面。
注意,普通重定向将是302重定向(临时),而这里您将看到永久重定向,301。
要么请求正确的url (self.client.get('/protected/')),要么执行重定向:self.client.get('/protected', follow=True)。这样,您的响应将是最后一页,您可以测试其内容是否符合您的期望。
https://stackoverflow.com/questions/60173287
复制相似问题