如何让用户通过URL创建页面?

时间:2017-06-07 19:51:47

标签: django wagtail

我正在思考/ mysite / blogs / new。我知道add_childRoutablepage以及'permissions route',但我仍然不知道如何通过网址创建网页。

我很惊讶,似乎没有任何指示这样做,因为依靠管理方法肯定是许多'天真'用户无法接受的。事实上,我花了一段时间才意识到Wagtail不像Wordpress,在“添加帖子”按钮之类的意义上。

文档没有明确说明用户(显然)希望通过管理部分创建页面。事实上,似乎有一种假设,开发人员会熟悉Django,即使CMS应该更容易使用IMO。

为了清楚起见,我认为Wagtail很棒,但说明书仍有待改进。也许我会尝试自己更新它们!

1 个答案:

答案 0 :(得分:0)

如果您启用了编辑鸟/用户栏,则只要您有权在其中添加子页面,它就会在页面树中的任何位置显示一个添加子页面的按钮。如果您希望为天真用户提供此选项,那么您可以将其权限设置为相当严格,以便他们仅在特定位置看到此选项,并且他们看不到管理员的任何其他“设置”区域。

Wagtail Userbar

添加它的管理页面确实有自己的URL:它通常看起来像http://www.example.com/admin/pages/13/add_subpage/,其中13是当前页面的ID。如果您想要自己呈现该链接,可以手动将模板中的链接添加为

<a href="{% url 'wagtailadmin_pages:add_subpage' page.id %}">Add a child page</a>

但首先应确保用户具有相关权限。这最好用Python完成,而不是在模板中完成。有关Wagtail如何做到这一点,请参阅https://github.com/wagtail/wagtail/blob/master/wagtail/wagtailadmin/userbar.py

为了更接近原始请求,您可以将上述所有内容与RoutablePageMixin相结合,方法是创建一个重定向到同一网址的路线“add”:

@route(r'^add$')
def add_child_page(self, request):
    return redirect(reverse('wagtailadmin_pages:add_subpage', args=[self.pk]))