使用Django存储具有复杂结构的内容

时间:2010-03-01 20:53:48

标签: django database-design data-structures django-templates content-management

是否存在建议的最佳实践,用于存储具有复杂结构的内容。例如,假设我尝试提供的典型“文章”可能具有以下层次结构:

Header #1
   Subheader #1.a)
      Text content
      Image content
      Text Content
   Subheader #1.b)
      Text Content
      Other complex content type, such as syntax highlighted code block
Header #2
...

我正在努力解决如何将其分解为适当的数据库结构,以便可以使用模板进行渲染。

我理解如何使用合成将文章的子组件分成多个部分(例如Header,Subheader,Content),每个子项指向其父级。但是,我正在努力解决如何存储在内容级别将所有内容重新组合在一起的方向。我想你可以为每个定义顺序的内容块存储一个索引,例如:

for each header in article
   print header
   for each subheader in header
      print subheader
      for each content block in subheader (ordered by index)
         print content block

这是一个可行的方法来解决这个问题,还是有更清洁的方法?任何帮助将不胜感激。

P.S。我想这不是Django特定的问题,但Django是我实现这一目标的最终手段。

1 个答案:

答案 0 :(得分:1)

看起来这个问题的一个常见方法是使用标记过滤器。例子包括Markdown和Textile。在这种方法中,您将整个文章作为一个blob存储在数据库中,然后使用标记过滤器将原始数据(包括一些原始布局信息)转换为HTML。