【问题标题】:Help with writing a custom CMS in Django帮助在 Django 中编写自定义 CMS
【发布时间】:2011-03-16 13:53:04
【问题描述】:

我正在尝试用 Django 编写我的第一个 CMS。到目前为止,我已经设法让一个系统启动并运行,类似于平面页面,但更灵活一些。关于如何处理 CMS 的结构,我有两个问题:

首先,我将带有文本内容的 HTML 标记存储在 Postgres 数据库中。我看到很多发帖人说出于安全原因不应该这样做。如果 HTML 不应该与文本一起存储,那么如何将粗体字、段落和图像标签等信息嵌入到内容中?

其次,我尝试检查了许多内容管理系统(主要是 PHP 系统),以了解它们如何处理目录结构。例如,我可能有一个出现在“计算机”类别中的编程页面。在静态页面中,我只需创建一个名为“computers”的目录并将我的静态编程页面放在该目录中。如何在 CMS 中对目录结构进行建模?我在 CMS 的底层结构上找不到任何信息。

感谢您的建议......

【问题讨论】:

  • 两个问题应该作为两个单独的问题发布,因为您可能希望从两个单独的回答者那里接受每一半的回答。

标签: django content-management-system data-modeling


【解决方案1】:

以后请把这个问题分成 2 个单独的问题。

  1. 存储 HTML 没问题。当你输出它时,一定要在模板中使用 |safe。如果你真的很挑剔,你可以避免使用http://en.wikipedia.org/wiki/Textile_%28markup_language%29http://en.wikipedia.org/wiki/Markdown来存储。他们是所见即所得的编辑器,可以为您解决所有麻烦。

  2. 您可以创建一个类别模型,并且您的所有页面都具有该模型的 ForeignKey。我发现的最灵活的解决方案之一是使用标签,因此一个页面可以有多个标签,因此属于多个“类别”http://code.google.com/p/django-tagging/

希望这会有所帮助。

【讨论】:

  • 谢谢 Tudorizo​​r。在 Django 中编程似乎非常缺乏“中间”信息。关于 CMS 之类的东西的结构,从来没有任何指导,然后当有人提出问题时,响应(就像我的 HTML 问题一样)通常类似于“你永远不应该将 HTML 放入数据库”。这种把中级程序员拒之门外,对初学者的提高没有帮助。
  • 文档不多,因为没有施加任何约束。由你决定。不要害怕做出错误的选择,尤其是在你做 TDD 的时候。
【解决方案2】:
  1. 存储 HTML 标记本身并不是不安全的。您只需在将它们放入数据库之前清除它们的危险内容。

  2. 您的页面模型需要包含有关类别的信息。然后在显示类别时,您将按类别查询您的页面,以获得所有“计算机”页面显示在计算机页面上。

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多