如何修改wagtail CMS,以便任何用户都可以在自己的博客下发布博客帖子

时间:2017-03-29 14:05:53

标签: python django wagtail

我有一个现有的Django App网站。 我安装了Wagtail,现在可以在www.example.com/cms访问Wagtail CMS。 Wagtail与我的数据库一起工作正常,当我转到settings然后users时,所有现有用户都在可见的CMS管理页面中。

我想使用Wagtail将博客功能添加到我的网站。

要求

  1. 我希望任何用户都能够创建新博客并将帖子添加到他们的博客中。
  2. 我希望用户创建的博客在www.example.com/blogs/username/
  3. 上可见

    如何设置Wagtail来实现这一目标?

    我已在http://docs.wagtail.io/en/v1.9/查看了文档,但无法确定从哪里开始修改。我还安装了示例博客项目(https://github.com/wagtail/wagtaildemo),但我也无法弄清楚如何从中完成上面的1和2。

    任何完整的答案或一般指示都非常受欢迎。

1 个答案:

答案 0 :(得分:3)

Wagtail内置的权限模型支持这种设置:http://docs.wagtail.io/en/stable/topics/permissions.html

在为博客创建索引页面后,您将为该博客创建一个组(设置 - > Wagtail管理员中的组) - 可能只包含一个用户 - 并在“页面权限”部分下,分配它在该索引页面上“添加”和“发布”权限。权限从该点向下传播到树上,“添加”权限包含编辑您自己创建的页面的功能,因此这将使用户能够控制其博客的子页面。

这与您描述的设置不完全匹配,因为它涉及现有的Wagtail管理员用户必须进行初始设置,而不是用户创建他们自己的博客。但是,由于所有这些配置都是通过创建/更新标准Django模型(例如GroupPagePermission)在内部完成的,因此原则上可以编写此过程的脚本 - 例如,您可以实现Django查看您网站前端的“设置我的博客”,其中包含以下步骤:

  • /blogs下创建一个BlogIndexPage,其标题/ slug与request.user.username匹配(有关如何以编程方式创建网页,请参阅https://stackoverflow.com/a/43041179/1853523
  • 为当前用户创建一个用户组(django.contrib.auth.models.Group),并为其分配wagtailadmin.access_admin权限(以便他们可以登录Wagtail管理员)
  • 创建与新创建的组和博客索引页面对应的wagtailcore.PagePermission对象,以及“添加”权限;同样适用于“发布”许可