【问题标题】:how to test wagtail admin pages using the django test client?如何使用 django 测试客户端测试 wagtail 管理页面?
【发布时间】:2017-07-31 18:59:24
【问题描述】:

我正在尝试使用 Django 测试客户端编写一些测试来检查我对 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 管理页面的一些关键属性?

【问题讨论】:

    标签: wagtail


    【解决方案1】:

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

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

    【讨论】:

    • 明显的改进!我现在得到的是 403 而不是 302。仍然不太正确。甚至尝试过user_permissions.add(*Permission.objects.all())
    • 要让您的用户访问 /admin/pages//edit/,您需要设置 GroupPagePermission 记录:github.com/wagtail/wagtail/blob/…。或者,通过设置 is_admin=True 使他们成为超级用户。
    【解决方案2】:

    这就是最终对我有用的方法:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2012-01-24
      相关资源
      最近更新 更多