如何使用django测试客户端测试wagtail管理页面?

时间:2017-07-31 18:59:25

标签: wagtail

我尝试使用Django Test Client编写一些测试来检查我对wagtail管理员的定制。我试过了:

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/">

我是否错过了Wagtail想要的用户的一些重要属性,让他们查看wagtail-admin页面?

2 个答案:

答案 0 :(得分:2)

Wagtail不使用is_staff标记来确定对管理员的访问权限 - 您需要为用户分配wagtailadmin.access_admin权限。

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

答案 1 :(得分:0)

这里最终对我有用的是什么:

self.user = get_user_model().objects.create_superuser(
    username='addy', email='admin@example.com', password='passwood321'
)

仅设置is_staff还不够。感谢上面的@gasman,用户没有is_admin引用。他们确实有is_superuser,因此这段代码也可以正常工作(并且可能更好,因为它不需要不相关的电子邮件或密码):

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