首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-作为经过身份验证的用户的测试请求

问django-作为经过身份验证的用户的测试请求
EN

Stack Overflow用户
提问于 2020-02-11 16:21:20
回答 1查看 205关注 0票数 1

我有一个新的Django项目(Version2.2)、一个定制的用户模型和django-allauth来管理用户注册(不是通过社交方式,只是通过电子邮件确认),我正在尝试测试一些受保护的视图。

在测试的setUp方法中,我创建了一个新用户,并创建了一个新的EmailAddress (来自allauth.account.models),并将verified和primary设置为True。

接下来,我尝试使用:self.client.login(username=username, password=password)和True登录,这样到目前为止一切都正常,用户也被记录下来了。

如果我试图查看任何需要登录的内容,我会得到一个301重定向到登录页面。

这是我的密码:

用户在setUp中的创建

代码语言:javascript
复制
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()

登录和中的测试

代码语言:javascript
复制
logged_in = self.client.login(email=username, password=password)
self.assertTrue(logged_in)  # and this works as expected

现在,如果我试图请求一个需要登录的视图:

代码语言:javascript
复制
response = self.client.get("/protected")

我得到了<HttpResponsePermanentRedirect status_code=301, "text/html; charset=utf-8", url="/protected/">

我错过了什么或者做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 16:56:19

您显示的重定向实际上显示了它重定向到的url:url="/protected/"。所以你不会被重定向到登录页面。

注意,普通重定向将是302重定向(临时),而这里您将看到永久重定向,301。

要么请求正确的url (self.client.get('/protected/')),要么执行重定向:self.client.get('/protected', follow=True)。这样,您的响应将是最后一页,您可以测试其内容是否符合您的期望。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60173287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档