【问题标题】:Building a generic block-based CMS with Django使用 Django 构建基于块的通用 CMS
【发布时间】:2011-12-04 21:53:42
【问题描述】:

一位设计师最近将我正在为客户构建的网站的设计交给我。它们是很棒的设计,但我真的很想知道如何在网站上实现它。

内容可以很容易地分解成块或数据块,我可以在其中为文本输入分配一个文本区域、为链接按钮分配几个字符字段等,然后依次将它们呈现到页面上。

问题(例如,为什么我不只是引入 Django-CMS 等)是这些块彼此之间非常独特。我可能会为每种块类型构建 20 种不同的模型。我不想绕过预制的 CMS,而是想构建一个 Page 模型,然后只拥有一个 M2M 链接到我的抽象 Block 类的子类的有序列表。我希望我不会失去你。

我不明白我怎么能做到这一点。这些问题浮现在脑海中:

  • 是否已经有一个简单的 CMS 可以完成所有这些工作?我是在浪费时间试图弄清楚物理原理吗?

  • 我的 Blocks 子类在技术上将是不同的类型。我是否需要 M2M-through 类的泛型才能链接到它们?是这样,我该怎么做?

  • 如何在内联管理上下文中呈现 x 个不同的表单? (我想要页面表单,下面有一个块列表)

  • 用户如何在内联控件中指定Block的类型?


编辑:或者,基于模板标签的 CMS 怎么样?

我正在考虑在我的模板中添加类似的东西:

{% editable 'unique_id' 'content-type' %}

另一个例子:

{% editable 'home-intro' 'text' %}

然后我可以将它们粘贴在我希望可编辑的模板周围,以我希望它们可编辑的方式,登录客户端时会看到“编辑文本”、“编辑链接”、“编辑图像”链接它只是弹出了正确的字段。

这会使事情更加锁定,但布局需要保持稳定(并且客户端对 HTML/CSS 一无所知),因此它是 IMO 中的一种或其他方法。

【问题讨论】:

    标签: python django content-management-system django-orm


    【解决方案1】:

    您不能将您的“块”实现为 Django CMS 插件吗?然后每个页面只是由一些插件构成的。

    每个插件都有一个管理表单,它可以获取自己的详细信息,然后页面模板会根据需要呈现插件。

    如果您查看 django-cms 演示的第一页:

    https://www.django-cms.org/en/tour-demo/

    您将在 (1) 中看到一个突出显示的插件块 - 在本例中是一个使用 TinyMCE 或类似工具编辑的格式化文本块。您可以定义自己的插件并将它们添加到页面中。

    【讨论】:

    • 我可以(并且实际上过去曾为不同的客户这样做过),但其中有很多麻烦,我对他们的界面并不十分热衷。这是我没有在这个项目中使用它的借口,但我确实意识到我的建议可能会比仅仅引入 Django CMS 带来更多的麻烦。我会记住这一点的。
    【解决方案2】:

    上个月我发表了一篇关于如何为 Jinja 构建基本 CMS 的文章(供审查)。这种模板语言与我之前一直在使用的 Django 并没有太大的不同。 你可以在这里找到它。它使用模板继承来填充内容块。 https://codereview.stackexchange.com/questions/5965/review-request-jinja-cms-for-energiekantoor-nl-on-google-app-engine 或者输入谷歌:Jinja CMS

    【讨论】:

      猜你喜欢
      • 2010-12-27
      • 2010-09-20
      • 2020-07-31
      • 2011-12-23
      • 2011-01-20
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多