我尝试使用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页面?
答案 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)