Django搭建个人博客:渲染Markdown文章目录
2019-03-22 本文已影响84人
9ba4bd5525b9
文中的目录
之前我们已经为博文支持了Markdown语法,现在继续增强其功能。
有折腾代码高亮的痛苦经历之后,设置Markdown的目录扩展就显得特别轻松了。
修改文章详情视图:
仅仅是将将markdown.extensions.TOC扩展添加了进去。
TOC: Table of Contents,即目录的意思
代码增加这一行就足够了。为了方便测试,往之前的文章中添加几个一级标题、二级标题等。
还记得Markdown语法如何写标题吗?一级标题:# title1,二级标题:## title2
然后你可以在文中的任何地方插入[TOC]字符串,目录就自动生成好了:
点击标题,页面就立即前往相应的标题处(即“锚点”的概念)。
任意位置的目录
上面的方法只能将目录插入到文章当中。如果我想把目录插入到页面的任何一个位置呢?
也简单,这次需要修改Markdown的渲染方法:
为了能将toc单独提取出来,我们先将Markdown类赋值给一个临时变量md,然后用convert()方法将正文渲染为html页面。通过md.toc将目录传递给模板。
注意markdown.markdown()和markdown.Markdown()的区别
更详细的解释见:官方文档
为了将新的目录渲染到页面中,需要修改文章详情模板:
重新布局,将原有内容装进col-9的容器中,将右侧col-3的空间留给目录
toc需要|safe标签才能正确渲染
重新打开页面: