Django:动态"目录"基于HTML标签

时间:2016-08-16 16:58:48

标签: python django python-3.x

我有一个TextField的模型,用户可以使用HTML填充。现在我希望Django呈现动态的内容和#34;,这样当使用<h>标签时,django会自动将其添加到列表中。如果嵌套列表也可以加分。

我已经考虑过使用包含标签,但我不确定具体细节。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

我从来没有这样做过......但这就是我开始的方式。

获取HTML

首先要做的事情 - 让用户添加HTML。可能安装tinyMCE,使用tinyMCE的HTML字段。用户可以使用tinyMCE的WYSIWUG复制和粘贴HTML或添加HTML内容。

生成DOM对象

你可能在想 - 我会写一些正则表达式来找到相关的h1-6标签。问题在于parsing html with regex is a nightmare,不应该使用regex

接下来您可能需要render the html。可能quite a few ways要做到这一点。

目录

然后浏览渲染的html并拉出所有h1-6标签或者你想要的任何东西。

您可能想要编辑html并将TOC添加到列表顶部 - 或者将其保存为单独的html片段,您可以在渲染时将其插入到主html文档中。

如果生成TOC听起来像是太多的工作......它可能是。我相信您可以找到自动提取h1标头并链接到内容的解决方案。这是jquery plugin就是这样做的。有点谷歌搜索可以在这里找到生成TOC的最简单的方法可能是有序的 - 似乎这是很常见的事情。

其他想法

  • 请注意 - 由于安全隐患,您需要确保在呈现页面时不解析javascript!
  • 用于修改html以将TOC超链接到实际标题的加值标记。
  • 如果用户修改了HTML内容,请确保重新生成TOC
祝你好运。