Django 学习 Blog 实操 08 --- 自动生成文章目录,处理文章锚点

一、本次任务

  • 文章内部添加目录
  • 文章目录写在文章外部
  • 处理文章目录为空的情况
  • 美化文章锚点显示路径

二、操作截图

  • 文章内部添加目录
    注意:[TOC] 要大写,小写无效
    add toc
    add toc effect

  • 文章目录写外面,原先处理 body 的改成如下:

md = markdown.Markdown(extensions=[
        'markdown.extensions.extra',
        'markdown.extensions.codehilite',
        'markdown.extensions.toc'
    ])
    post.body = md.convert(post.body)
    post.toc = md.toc  # 动态添加属性

content toc out of article

  • 处理空目录
    去掉一级二级标题,制造出一个空目录
    右侧用if判断也还是如下效果:
    empty toc
    处理空目录代码如下,注意一个单引号双引号也会导致达不到如期效果的:
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 ''

empty toc do not show

  • 点击锚点,优化显示路径:
    锚点 url
    代码:
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)
    ])

优化后,显示的就可以是中文的,跟层级标题一样
right maodian url

三、问题总结

  • 第一次发现动态属性可以这么用,为什么有时候就会报错没有这个属性呢?
  • 关于正则空目录的写法,有点不懂?
  • 需要经常总结常用知识点,熟能生巧。

附上 Gitee 地址:https://gitee.com/langxing/HelloDjango-blog-tutorial

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sapphire~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值