2017-07-31 123 views
0

我想写一些测试使用Django测试客户端来检查我的w admin管理员的自定义。我已经试过:如何使用django测试客户端测试w admin管理页面?

self.user = get_user_model().objects.create(
    username='addy', is_staff=True 
) 
self.client.force_login(self.user) 
response = self.client.get(f'/admin/pages/{self.thing.id}/edit/') 

但我还是最终会看到一个HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/admin/login/?next=/admin/pages/6/edit/">

我失去了一些重要的属性到鹡鸰想在ordet让他们查看鹡鸰管理员页面的用户?

回答

2

W does不使用is_staff标志来确定对管理员的访问 - 您需要为您的用户指定wagtailadmin.access_admin权限。

有关以正确权限设置测试用户的示例,请参阅https://github.com/wagtail/wagtail/blob/c6666c6de5e83bf94d18324858c121e6584ba47d/wagtail/wagtailsites/tests.py#L258

+0

一个明确的改善!我现在得到了403而不是302.仍然不太合适。甚至尝试过'user_permissions.add(* Permission.objects.all())' – hwjp

+0

为了让用户能够访问/ admin/pages//edit /,您需要设置GroupPagePermission记录:https:// github .com/wagtail/wagtail/blob/14a36f29c0e20a992a57f965b5757567ffe1e796/wagtail/wagtailcore/models.py#L1594。或者,通过设置is_admin = True使其成为超级用户。 – gasman

0

下面是我到底什么工作:

self.user = get_user_model().objects.create_superuser(
    username='addy', email='[email protected]', password='passwood321' 
) 

只设置is_staff是不够的。由于上面的@gasman的应有的感谢,用户没有is_admin atttribute。他们确实有is_superuser,所以这段代码的作品一样好(和可能更好,因为它并不需要一个不相干的电子邮件或密码):

self.user = get_user_model().objects.create(username='addy', is_superuser=True) 
self.client.force_login(self.user)