国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Django渲染Markdown文章目錄的方法示例

Django渲染Markdown文章目錄的方法示例

2021-05-10 00:38杜賽 Python

這篇文章主要介紹了Django渲染Markdown文章目錄的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

對會讀書的人來說,讀一本書要做的第一件事,就是仔細閱讀這本書的目錄。閱讀目錄可以對整體內容有所了解,并清楚地知道感興趣的部分在哪里,提高閱讀質量。

博文也是同樣的,好的目錄對博主和讀者都很有幫助。更進一步的是,還可以在目錄中設置錨點,點擊標題就立即前往該處,非常的方便。

文中的目錄

之前我們已經為博文支持了markdown語法,現在繼續增強其功能。

有折騰代碼高亮的痛苦經歷之后,設置markdown的目錄擴展就顯得特別輕松了。

修改文章詳情視圖:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
article/views.py
 
...
 
# 文章詳情
def article_detail(request, id):
 ...
 article.body = markdown.markdown(article.body,
  extensions=[
  'markdown.extensions.extra',
  'markdown.extensions.codehilite',
   
  # 目錄擴展
  'markdown.extensions.toc',
  ]
 )
 ...

僅僅是將將markdown.extensions.toc擴展添加了進去。

toc: table of contents,即目錄的意思

代碼增加這一行就足夠了。為了方便測試,往之前的文章中添加幾個一級標題、二級標題等。

還記得markdown語法如何寫標題嗎?一級標題:# title1,二級標題:## title2

然后你可以在文中的任何地方插入[toc]字符串,目錄就自動生成好了:

Django渲染Markdown文章目錄的方法示例

點擊標題,頁面就立即前往相應的標題處(即“錨點”的概念)。

任意位置的目錄

上面的方法只能將目錄插入到文章當中。如果我想把目錄插入到頁面的任何一個位置呢?

也簡單,這次需要修改markdown的渲染方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
article/views.py
 
...
 
def article_detail(request, id):
 ...
 
 # 修改 markdown 語法渲染
 md = markdown.markdown(
  extensions=[
  'markdown.extensions.extra',
  'markdown.extensions.codehilite',
  'markdown.extensions.toc',
  ]
 )
 article.body = md.convert(article.body)
 
 # 新增了md.toc對象
 context = { 'article': article, 'toc': md.toc }
 
 return render(request, 'article/detail.html', context)

為了能將toc單獨提取出來,我們先將markdown類賦值給一個臨時變量md,然后用convert()方法將正文渲染為html頁面。通過md.toc將目錄傳遞給模板。

注意markdown.markdown()和markdown.markdown()的區別

更詳細的解釋見:官方文檔

為了將新的目錄渲染到頁面中,需要修改文章詳情模板:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
templates/article/detail.html
 
...
 
<div class="container">
 <div class="row">
  <!-- 將原有內容嵌套進新的div中 -->
  <div class="col-9">
   <h1 class="mt-4 mb-4">{{ article.title }}</h1>
   <div class="alert alert-success">
    ...
   </div>
  </div>
 
  <!-- 新增的目錄 -->
  <div class="col-3 mt-4">
   <h4><strong>目錄</strong></h4>
   <hr>
   <div>
    {{ toc|safe }}
   </div>
  </div>
 </div>
</div>
 
...
  • 重新布局,將原有內容裝進col-9的容器中,將右側col-3的空間留給目錄
  • toc需要|safe標簽才能正確渲染

重新打開頁面:

Django渲染Markdown文章目錄的方法示例

總結

完成了文章的目錄功能,至此文章詳情頁面也比較完善了。

項目完整代碼:django_blog_tutorial

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000017578378

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 午夜精品视频 | 久久久精品456亚洲影院 | 国产第一亚洲 | 四虎影院网站 | 这里只是精品 | 天天精品视频免费观看 | 久久精品在线 | 久久久久久久久久久九 | 国产视频一二三区 | 国内精品视频一区二区三区八戒 | 欧美精品在线一区二区三区 | 久久av一区二区 | 午夜影院久久 | 夜久久| 久草中文在线观看 | 精品国产91 | 成人aaa毛片 | 中文字幕第一页在线 | 成人黄色片网站 | 欧美精品成人 | 久久精品亚洲一区二区 | 17c一起操| 国产探花在线精品一区二区 | sis001亚洲原创区 | 国产成人精品免高潮在线观看 | 日韩成人在线一区 | 成人免费黄色毛片 | 91在线视频观看 | 中文字幕一区二区三区不卡 | 日韩在线视频一区 | 亚洲av毛片一区二二区三三区 | 久久中文字幕一区二区三区 | 欧美日韩久 | 成人在线免费视频 | 色国产精品 | 91精品久久久久久久久久 | 精品综合 | 久久只有精品 | 久久艹综合 | 中文字幕国产日韩 | 日韩午夜影院 |