我正在尝试在Django中编写我的第一个CMS。到目前为止,我已经设法启动和运行类似于flatpages的系统,但更灵活一点。关于我如何接近CMS的结构,我有两个问题:
首先,我将带有文本内容的HTML标记存储在Postgres数据库中。我见过很多帖子都说不应该出于安全原因这样做。如果HTML不应与文本一起存储,那么如何将粗体输入,段落和图像标记等信息嵌入到内容中?
其次,我尝试检查了许多内容管理系统(主要是PHP系统)如何处理目录结构。例如,我可能有一个出现在“计算机”类别中的编程页面。在静态页面中,我只创建一个名为“computers”的目录,并将我的静态编程页面放在该目录中。如何在CMS内对目录结构进行建模?我在CMS的底层结构上找不到任何信息。
感谢您的任何建议......
答案 0 :(得分:2)
存储HTML标记本身并不安全。在将它们放入数据库之前,您只需要清除危险内容。
您的网页模型需要包含有关该类别的信息。然后,在显示类别时,您将按类别查询您的页面,以便在计算机页面上显示所有“计算机”页面。
答案 1 :(得分:0)
将来在两个单独的问题中将其分开。
存储HTML很好。输出时一定要在模板中使用| safe。如果你真的想要挑剔,可以使用http://en.wikipedia.org/wiki/Textile_%28markup_language%29或http://en.wikipedia.org/wiki/Markdown来避免存储。他们是那些完全没有问题的编辑。
您可以创建一个类别模型,并且所有页面都具有此模型的ForeignKey。我找到的最灵活的解决方案之一是使用标签,因此页面可以包含多个标签,因此属于多个“类别”http://code.google.com/p/django-tagging/
希望这有帮助。