如何无头地在Wagtail中创建页面?

问题描述

有什么方法可以模仿Wagtail创建页面的行为?

我能想到的唯一方法是完全复制他们在管理界面中单击“发布”时发送的POST请求,但这简直太可怕了。

我需要这个,因为我需要从api获取产品列表,对其进行处理并将其插入我的数据库中。我更希望通过w来做,这样我就不会偏离CMS

在理想情况下,这将是对某些api端点的调用,在该端点中,我在请求的正文中提供了所需的字段。

解决方法

为什么不创建管理命令。

https://docs.djangoproject.com/en/3.1/howto/custom-management-commands/

,

您可以使用管理命令(或任何其他触发器)来执行以下操作:

from wagtail.core.models import Page

from myapp.models import CustomPage


parent_page = Page.objects.filter(slug="parent_page")[0] # get a suitable parent 

page = CustomPage(
        title="Sample name",depth=4,path="Some random path",)

parent_page.add_child(instance=page)