在开始使用Wagtail之前要知道的事情
#网络开发人员 #python #django #wagtail

序幕

Wagtail是建立在Django上的CMS。它继承了Django的一些主要功能,包括安全性和易用性。因此,这两个框架具有许多相似之处。在决定学习Wagtail之前,有帮助有Django的知识。即使可以将Wagtail作为独立框架学习。

尽管它们的所有相似之处在Wagtail和Django之间存在一些差异。 Wagtail最引人注目的是重点放在页面及其所包含的内容上。以及页面之间的分层关系。 (即目录中使用的相同类型的结构)。


└── home

    ├── blog

    │   ├── first_post

    │   └── second_post

    └── profiles

        └── profile1

image showing the directory tree structure in the terminal
每种Page类型都是Django模型,并从ClusterableModel继承。然后,clusterablemodel从Django自己的模型类继承。下图显示了它们之间的关系:

Inheritace diagram showing the relationship between the different classes

关于页面的所有内容

在Wagtail页面中托管所有内容。 Wagtail提供的页面模型抽象了很多东西。这使创建和管理内容变得更加容易。其中一些抽象包括:

  • 所有页面都是Django模型的扩展。因此,可以访问模型中提供的所有功能和字段等等。例如,RichTextFieldStreamField
  • 定义页面使您可以定义各种编辑面板。例如:content_panelspromote_panelssettings_panels,以便于Wagtail的管理面板容易管理
  • 页面让您选择用于它们的HTML模板
  • 在管理面板中,您可以决定页面路线及其与其他页面的关系。 (即父母,子页)
  • Wagtail通过组合功能来改善开发人员的体验。页面类型充当modelurlsviewsadmin类,在典型的django项目中提供。

与django一样,这种易用性是有代价的。由于内部处理了很多事情,它似乎是一个黑匣子,尤其是对于那些不完全掌握内部工作的人。

在您采用Wagtail时要避免的一些错误:

  • 使用代码创建页面对象时,您必须考虑页面的关系。使用管理面板时,Wagtail会处理此操作。如前所述,页面之间的关系很重要。下面的堆栈溢出页面中的更多详细信息:。 下面的堆栈溢出页面中的更多详细信息:

    我正在尝试编程创建一个PostPage对象。该类从Wagtail的koude10模型继承:

    post = PostPage.objects.create(
        title='Dummy',
        intro='This is just for testing dummy',
        body='Lorem ipsum dolor...',
        first_published_at=datetime.strptime(f'2019-01-01', '%Y-%m-%d')
    )
    

    但是,我收到以下错误:

    ValidationError: {'path': ['This field cannot be blank.'], 'depth': ['This field cannot

  • 确保您注意在管理面板的“促销”选项卡中为您的页面生成的sl(路线),并修改它们以满足您的需求

    结论

    要了解有关Wagtail可能发生的更多信息,请查看docs。感谢您的阅读。