一、本次任务
- 文章内部添加目录
- 文章目录写在文章外部
- 处理文章目录为空的情况
- 美化文章锚点显示路径
二、操作截图
md = markdown.Markdown(extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
'markdown.extensions.toc'
])
post.body = md.convert(post.body)
post.toc = md.toc # 动态添加属性
- 处理空目录
去掉一级二级标题,制造出一个空目录 右侧用if 判断也还是如下效果: 处理空目录代码如下,注意一个单引号双引号也会导致达不到如期效果的:
import re
md = markdown.Markdown(extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
'markdown.extensions.toc'
])
post.body = md.convert(post.body)
# re matching out empty directory
# wrong
# m = re.search(r"<div class='toc'>\s*<ul>(.*)</ul>\s*</div>", md.toc, re.S)
# right
m = re.search(r'<div class="toc">\s*<ul>(.*)</ul>\s*</div>', md.toc, re.S)
post.toc = m.group(1) if m else ''
- 点击锚点,优化显示路径:
代码:
from django.utils.text import slugify
from markdown.extensions.toc import TocExtension
md = markdown.Markdown(extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
# 'markdown.extensions.toc'
TocExtension(slugify=slugify)
])
优化后,显示的就可以是中文的,跟层级标题一样
三、问题总结
- 第一次发现动态属性可以这么用,为什么有时候就会报错没有这个属性呢?
- 关于正则空目录的写法,有点不懂?
- 需要经常总结常用知识点,熟能生巧。
附上 Gitee 地址:https://gitee.com/langxing/HelloDjango-blog-tutorial
|