0

我按照Official Wagtail Docs将新安装的 Wagtail 集成到现有的 Django 项目中。我HomePage在现有的 Django 中添加了自定义类models.py

# myDjangoProject/models.py

class HomePage(Page):
    template = "homepage.html"
    content = RichTextField()
    content_panels = Page.content_panels + [
        FieldPanel("content")
    ]

在此处输入图像描述 Q1:在上面的截图中,为什么系统默认页面Welcome to WagtailPageTYPE,而新创建New Page的页面是Home page自动的?

在此处输入图像描述 Welcome to WagtailQ2:在上面的截图中,为什么系统默认页面下新建的子页面Home page居然没有任何手动配置?

在此处输入图像描述 HomePageQ3:在上面的截图中,为什么所有新创建的页面都自动继承自我的自定义类(无需手动配置)MyDjangoProject/models.py?这如何反映在源代码级别?

4

1 回答 1

1

该类Page是 Wagtail 中所有页面类型的基类,但通常不希望让用户创建属于该类型的页面Page而不是更具体的页面,因为无法向其中添加新的内容字段。因此,is_creatable属性设置为 false on Page,这意味着无法通过管理界面创建该类型的新页面。(此属性不被子类继承,因此您创建的任何新页面类型都将is_creatable = True默认为。)

最初的“欢迎”页面是作为wagtail.core应用程序迁移的一部分创建的。此时,Page是唯一存在的页面类型(因为您的 HomePage 模型尚未定义),所以这是 Wagtail 使用的一种。默认页面不是您可以通过管理员自己创建的页面,这似乎有点奇怪,但没有真正的选择(除了根本不提供默认页面,这将使开发人员更难查看他们的安装已经工作)。

(当通过 设置一个全新的 Wagtail 项目时wagtail start,项目模板包括迁移以用Page提供的模型的实例替换初始实例HomePage,因此在这种情况下它不那么令人困惑。)

定义HomePage模型后,这将成为唯一带有 的页面类型is_creatable = True,因此管理界面会在添加新页面时自动选择此页面类型。当您在 HomePage 旁边添加另一个页面模型时,您会发现它会提示您选择页面类型。

于 2021-07-15T10:24:59.503 回答