django-allauth 测试请求作为经过身份验证的用户
django-allauth test request as authenticated user
我有一个新的 Django 项目(2.2 版)、一个自定义用户模型和 django-allauth
来管理用户注册(不是通过社交,只是通过电子邮件确认),我正在尝试测试一些受保护的观看次数。
在测试的 setUp
方法中,我创建了一个新用户并使用 verified
和 primary
创建了一个新的 EmailAddress
(来自 allauth.account.models
)设置为 True
.
接下来我尝试登录:self.client.login(username=username, password=password)
我得到 True
所以到目前为止一切正常并且用户已登录。
如果我尝试查看任何需要登录的内容,我会收到 301 重定向到登录页面。
这是我的代码:
在设置中创建用户
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/">
我错过了什么或做错了什么?
您显示的重定向实际上向您显示了 url 它重定向到:url="/protected/"
。所以您不会被重定向到登录页面。
请注意,正常的重定向是 302 重定向(临时),而在这里您看到的是永久重定向 301。
请求正确的 url (self.client.get('/protected/')
) 或遵循重定向:self.client.get('/protected', follow=True)
。这样您的回复将针对最后一页,您可以测试其内容是否符合您的预期。
我有一个新的 Django 项目(2.2 版)、一个自定义用户模型和 django-allauth
来管理用户注册(不是通过社交,只是通过电子邮件确认),我正在尝试测试一些受保护的观看次数。
在测试的 setUp
方法中,我创建了一个新用户并使用 verified
和 primary
创建了一个新的 EmailAddress
(来自 allauth.account.models
)设置为 True
.
接下来我尝试登录:self.client.login(username=username, password=password)
我得到 True
所以到目前为止一切正常并且用户已登录。
如果我尝试查看任何需要登录的内容,我会收到 301 重定向到登录页面。
这是我的代码:
在设置中创建用户
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/">
我错过了什么或做错了什么?
您显示的重定向实际上向您显示了 url 它重定向到:url="/protected/"
。所以您不会被重定向到登录页面。
请注意,正常的重定向是 302 重定向(临时),而在这里您看到的是永久重定向 301。
请求正确的 url (self.client.get('/protected/')
) 或遵循重定向:self.client.get('/protected', follow=True)
。这样您的回复将针对最后一页,您可以测试其内容是否符合您的预期。