【问题标题】:Should I use Wagtail for all models in a Django app?我应该对 Django 应用程序中的所有模型使用 Wagtail 吗?
【发布时间】:2017-11-21 23:12:50
【问题描述】:

我正在构建一个使用 Wagtail 的新 web 应用程序。这是一个架构问题。

会有标准的关于服务条款博客页面。所有这些都非常适合 Wagtail 范式。该网站的其余内容是有关特定类型企业的基于位置的信息。想想FourSquare 类型的应用程序。这些页面的数据将非常结构化,通过面向用户的网页和移动应用程序进行更新,并且是大量的 JavaScript。

对于常规 Wagtail 页面,随着时间的推移可能会有数百个。对于位置页面类型,将有(希望)数以万计的页面嵌套到最多四个级别。

从站点范围的功能角度来看,我希望利用 Wagtail 功能,例如站点地图和 Elastic Search。

我的问题是,我应该为基于位置的页面使用 wagtail Page 类吗?

优点:

  • 与 Elastic Search 和 Wagtail 站点地图轻松集成
  • 在管理端利用 Wagtail 编辑器。
  • 始终保持一致的模型和 API 结构。

缺点:

  • 位置页面的开销可能更大。
  • 需要利用更多的钩子来操作视图输出(大量的 JS,因此将在模板中插入非模型信息)。
  • 可能会限制某些第三方模块的使用。

如果我走的是 non-wagtail 路线,是否可以将 non-wagtail 模型添加到搜索索引中?

在这个选择中我还应该考虑其他问题吗?

【问题讨论】:

    标签: django-models wagtail


    【解决方案1】:

    Any Django model can be indexed and searched 继承自 index.Indexed 并将 search_fields 定义到模型上。

    至于是否使用页面,一如既往地取决于很多事情。然而,看起来保持你的位置模型是有意义的,而不是让它成为一个页面并在管理员中公开(如果你需要一些已经存在的扩展,则使用 Django Admin,否则Wagtail's modeladmin)。然后您将创建一个LocationIndexPage,它实现RoutablePageMixin 以动态服务LocationPages。该页面不会存在于管理树中,但无论如何都可以访问。

    【讨论】:

    • 感谢洛伊克的回答。没想到只为索引页面使用 Wagtail。我会考虑一下。
    • 我们如何决定何时使用 wagtail Page 以及何时使用 Django 模型?因为在我看来,只要我们可以使用 wagtail edit_handlers 和 streamfield,一切都可以在 Django 模型中实现。所以我没有理由更喜欢 wagtail 页面而不是 Django 模型,这对我作为 wagtail 初学者来说真的很困惑
    • Wagtail Pages 应该在您想通过 URL 向用户公开页面并且能够通过管理界面组织这些页面的父/子关系时使用。跨度>
    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2014-07-30
    • 2011-05-03
    相关资源
    最近更新 更多