首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django force_login没有登录Django客户端吗?

Django force_login没有登录Django客户端吗?
EN

Stack Overflow用户
提问于 2018-11-07 14:12:59
回答 1查看 2.4K关注 0票数 2

我肯定遗漏了一些明显的东西,但我看不到,所以也许你能帮上忙?

我正在使用Pytest测试一个Django表单和它的对象创建。我正在使用Django客户端对象,并尝试force_login,它根据结果是不工作的,因为在响应中,url包含重定向到登录页面,就好像用户不会登录一样……

为什么会发生这种情况,我做错了什么以及如何修复它?

代码如下:

代码语言:javascript
复制
from django.test import TestCase, RequestFactory, Client

class TestViews(TestCase):

@classmethod
def setUpClass(cls):
    super(TestViews, cls).setUpClass()
    cls.user = mixer.blend(get_user_model())
    cls.patient = mixer.blend('patient.Patient', created_by=cls.user)
    cls.factory = RequestFactory()


@pytest.mark.django_db
def test_patient_creation_form_valid(self):
    c = Client()
    c.force_login(self.user)
    response = c.post(reverse('NewPatientForm'), {
        'name': 'John',
        'surname': 'Smith',
        'phone': '601123456',
        'email': 'john.smith@gmail.com',
    })
    self.assertEqual(response.status_code, 302)
    np = c.get(response.url)

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-01-03 18:19:46

我在测试中遇到了类似的问题,即使我使用的是force_login,用户也会被重定向到登录页面。

实际上,该用户已登录,但缺少查看该页面所需的权限。

当我添加了所需的权限(如下所示)时,我能够成功地发布到页面,而不会被重定向。

代码语言:javascript
复制
    perm = Permission.objects.get(codename='can_approve_requests')
    user.user_permissions.add(perm)

有关权限的更多信息,请单击此处Django Permissions and Authorization

我希望这能帮到你。

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

https://stackoverflow.com/questions/53184379

复制
相关文章

相似问题

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