使用Django构建基于块的通用CMS

时间:2011-12-04 21:53:42

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

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

内容可以非常容易地分解为数据块或数据块,我可以为文本输入分配文本区域,为链接按钮分配几个字段等,然后依次将它们呈现给页面。

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

我不明白我该怎么做。这些问题浮现在脑海中:

  • 是否有一个简单的CMS可以完成所有这些工作?我是在浪费时间试图找出物理学吗?

  • My Blocks子类在技术上属于不同的类型。我是否需要通用类的泛型来链接它们?是这样,我该怎么做?

  • 如何在内联管理上下文中呈现x个不同的表单? (我希望页面表单中包含下面的块列表)

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


编辑:或者,或者,基于模板标签的CMS呢?

我正在考虑在我的模板中点击这个:

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

另一个例子:

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

然后我可以把它们粘在我想要编辑的模板上,按照我希望它们可编辑的方式,当登录到客户端时会看到“编辑文本”,“编辑链接”,“编辑图像”链接这只是突然出现了正确的领域。

这会让事情变得更加紧张,但布局需要保持稳定(客户端对HTML / CSS一无所知),所以这是IMO中的一种或另一种方法。

2 个答案:

答案 0 :(得分:0)

难道你不能像Django CMS插件一样实现你的'Blocks'吗?然后每个页面都是由许多插件构成的。

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

如果你看一下django-cms演示的第一页:

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

你会在(1)中看到一个突出显示的插件块 - 在这种情况下是一个用TinyMCE或类似编辑的格式化文本块。您可以定义自己的插件并将其添加到页面中。

答案 1 :(得分:0)

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