如何使用 django-cms 为 apphook 模型实例创建子页面?
How to create sub-pages for apphook model instances with django-cms?
问题上下文
我负责为一个项目设计cms架构。
要求说明一组编辑者应该能够创建 "Projects"。
每个项目..
- 保存有关自身的元数据
- 可从其他地方查询(例如前 5 个项目)。
- 有一个显示有关它的信息的页面。 (不需要是cms页面实例)
- 可以连接到国家(意味着该项目的实施存在于选定的县)。
- 可以有子页面,子页面又可以嵌套。
想象的例子
使用 django-cms 文档作为基础,我将生成的结构想象成这样:
- 项目(apphook)
- "Project 1"(
project 1
模型实例的页面)
- "Project 2"(
project 2
模型实例的页面)
- "Project 2 Subpage 1"(
project 2
模型实例的子页面)
- "Project 2 Subpage 2"(
project 2
模型实例的子页面)
- "Project 2 Sub-Subpage"("Project 2 Subpage 2" 的子页面)
然而,这似乎不存在,或者至少我没有看到任何关于如何获得这种结构的参考资料。
在一个视频中我听说一旦有一个 apphook.. 子页面就不再有意义了。
我在其他地方读到,理论上如果钩子足够宽容......它可以结合起来。然而,即使这有效.. 子页面也不会被自定义 apphook 模型的实际实例所喜欢。
PS: 我目前使用的是:django-cms==3.3.0
问题
如何使用 django-cms 构建这样的结构?
我想这可以通过为每个项目设置一个 apphooked 页面来完成。在那种情况下......必须为每个新创建的项目重新启动服务器。那样好像不太优雅
备选方案
我在之前的项目中一直在使用 wagtail。因此,我确实知道如何使用 ProjectPage
和 ProjectSubpage
模型轻松地使用 wagtail 实现这样的结构。
我拒绝放弃能够复制此类功能的 django-cms。我对替代范例和方法持开放态度。也许还有一些我没有想到。如果是这样,请告诉我。 :)
请求
非常欢迎指导和想法!
如果您知道如何获得它或有什么想法可以为我指明正确的方向,请告诉我。
谢谢!
这里有几点要告诉你。
django CMS 可以愉快地提供页面 "beneath" 和 apphook,但 apphook 在 URL 解析期间获得优先权。所以,只要确保你的 apphook 的 URL 模式不会吞噬一切,sub-pages 应该没问题。
另一种方法是制作一个 one-to-many table 包含 "page-like" 属性(标题、meta-attributes 等)并在至少一个 PlaceholderField。然后可以使用它来呈现看似正常的 CMS 页面,apphook-itself 可以通过其视图控制这些页面。因此,您可以拥有 apphook-model-specific 上下文和 url-patterns,并且仍然拥有 CMS 的几乎所有 front-end 编辑功能。
希望对您有所帮助!
问题上下文
我负责为一个项目设计cms架构。
要求说明一组编辑者应该能够创建 "Projects"。
每个项目..
- 保存有关自身的元数据
- 可从其他地方查询(例如前 5 个项目)。
- 有一个显示有关它的信息的页面。 (不需要是cms页面实例)
- 可以连接到国家(意味着该项目的实施存在于选定的县)。
- 可以有子页面,子页面又可以嵌套。
想象的例子
使用 django-cms 文档作为基础,我将生成的结构想象成这样:
- 项目(apphook)
- "Project 1"(
project 1
模型实例的页面) - "Project 2"(
project 2
模型实例的页面)- "Project 2 Subpage 1"(
project 2
模型实例的子页面) - "Project 2 Subpage 2"(
project 2
模型实例的子页面)- "Project 2 Sub-Subpage"("Project 2 Subpage 2" 的子页面)
- "Project 2 Subpage 1"(
- "Project 1"(
然而,这似乎不存在,或者至少我没有看到任何关于如何获得这种结构的参考资料。
在一个视频中我听说一旦有一个 apphook.. 子页面就不再有意义了。 我在其他地方读到,理论上如果钩子足够宽容......它可以结合起来。然而,即使这有效.. 子页面也不会被自定义 apphook 模型的实际实例所喜欢。
PS: 我目前使用的是:django-cms==3.3.0
问题
如何使用 django-cms 构建这样的结构?
我想这可以通过为每个项目设置一个 apphooked 页面来完成。在那种情况下......必须为每个新创建的项目重新启动服务器。那样好像不太优雅
备选方案
我在之前的项目中一直在使用 wagtail。因此,我确实知道如何使用 ProjectPage
和 ProjectSubpage
模型轻松地使用 wagtail 实现这样的结构。
我拒绝放弃能够复制此类功能的 django-cms。我对替代范例和方法持开放态度。也许还有一些我没有想到。如果是这样,请告诉我。 :)
请求
非常欢迎指导和想法! 如果您知道如何获得它或有什么想法可以为我指明正确的方向,请告诉我。
谢谢!
这里有几点要告诉你。
django CMS 可以愉快地提供页面 "beneath" 和 apphook,但 apphook 在 URL 解析期间获得优先权。所以,只要确保你的 apphook 的 URL 模式不会吞噬一切,sub-pages 应该没问题。
另一种方法是制作一个 one-to-many table 包含 "page-like" 属性(标题、meta-attributes 等)并在至少一个 PlaceholderField。然后可以使用它来呈现看似正常的 CMS 页面,apphook-itself 可以通过其视图控制这些页面。因此,您可以拥有 apphook-model-specific 上下文和 url-patterns,并且仍然拥有 CMS 的几乎所有 front-end 编辑功能。
希望对您有所帮助!