从 Django 转向 Wagtail 之前我应该知道什么

问题描述 投票:0回答:1

我是 python 程序员,我知道 django 是如何工作的,但我正在尝试转向 Wagtail。

我似乎不明白 Wagtail 是如何工作的,它将模型与模板混合在一起,而且我还发现它不使用任何视图,这与 django 的工作方式背道而驰。

您能给我解释一下什么是 Wagtail Page 吗?我知道它是一种模型,但我似乎不明白它是如何工作的。

我还想知道如何使用 Wagtail 页面根据数据库中的数据呈现不同的数据,比如数据库中用户的图像。

另外,我是否必须为所有内容创建一个页面,例如,如果我想创建一个用户模型或配置文件模型,它也必须是一个页面吗?

请帮忙。

我尝试实际使用 Wagtail 文档创建一个网络应用程序,但我似乎无法控制。Wagtail 没有视图,所以我不知道如何以自己的方式处理请求然后发送我自己的响应,比如说 JSON 数据。

python django web content-management-system wagtail
1个回答
0
投票

如果您想在 Wagtail 页面上显示数据库表中的项目,我建议:

  • 添加到页面上下文。您可以像在 Django 基于类的视图中一样通过覆盖
    get_context()
    来执行此操作。
  • 在您为页面创建的模板中渲染上下文项,就像在模板中一样。您可能想要呈现一个项目列表,当单击其中一个项目时,您将想要呈现一个详细信息页面(如果列表页面上有很多项目,则只需返回一部分,也许是 10 个)
    get_context()
    ,稍后添加分页)。在创建列表/详细信息页面设置时,您可以创建两个单独的 Wagtail 页面 - 一个用于项目列表,另一个用于项目详细信息(例如,新闻项目列表和单个新闻项目的单个页面)。在这种情况下,您可以将详细信息页面放置在列表页面下的页面树中,但设置详细信息页面,使其不会显示在导航中(这是 Wagtail 管理中的默认设置 - 它位于“推广”选项卡上) .

在您熟悉上述内容后,还有另外两个考虑因素:

  • 您可以在 Wagtail 管理员中进行设置,以便可以在那里编辑模型条目,而不必从常规 Django 管理员中进行编辑。请注意,ModelAdmin 中提到的 列表页面 与您创建的要在网站上显示的上面提到的列表页面不同。
  • 按照上面的两页设置所述,熟悉显示数据库中的数据后,您应该看一下 RoutablePageMixin。它可以在如何显示数据库表中的项目方面提供更大的灵活性,您甚至可以使用它来设置单个 Wagtail 页面,通过使用一个呈现其中一个或另一个的模板来显示项目列表和详细信息基于传递给模板的上下文数据(即,您可以在单个 Wagtail 页面上创建两条路线 - 一条用于列表,一条用于详细信息)。通过这样做,您不必在页面树中拥有如上所述的详细信息页面。
© www.soinside.com 2019 - 2024. All rights reserved.