1. 程式人生 > >makedown 和程式碼高亮

makedown 和程式碼高亮

將 Markdown 格式的文字渲染成標準的 HTML 文件是一個複雜的工作,好在已有好心人幫我們完成了這些工作,我們直接使用即可。首先安裝 Markdown,這是一個 Python 第三方庫,啟用虛擬環境,然後使用命令 pip install markdown 安裝即可

將 Markdown 格式的文字渲染成 HTML 文字非常簡單,只需呼叫這個庫的 markdown 方法即可。我們書寫的部落格文章內容存在 Post 的 body 屬性裡,回到我們的詳情頁檢視函式,對 post 的 body 的值做一下渲染,把 Markdown 文字轉為 HTML 文字再傳遞給模板:

blog/views.py

import
markdown from django.shortcuts import render, get_object_or_404 from .models import Post def detail(request, pk): post = get_object_or_404(Post, pk=pk) # 記得在頂部引入 markdown 模組 post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra'
, 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})

我們在釋出的文章詳情頁沒有看到預期的效果,而是類似於一堆亂碼一樣的 HTML 標籤,這些標籤本應該在瀏覽器顯示它本身的格式,但是 Django 出於安全方面的考慮,任何的 HTML 程式碼在 Django 的模板中都會被轉義(即顯示原始的 HTML 程式碼,而不是經瀏覽器渲染後的格式)。為了解除轉義,只需在模板標籤使用 safe 過濾器即可,告訴 Django,這段文字是安全的,你什麼也不用做。在模板中找到展示部落格文章主體的 {{ post.body }} 部分,為其加上 safe 過濾器,{{ post.body|safe }},大功告成,這下看到預期效果了。
safe 是 Django 模板系統中的過濾器(Filter),可以簡單地把它看成是一種函式,其作用是作用於模板變數,將模板變數的值變為經過濾器處理過後的值。例如這裡 {{ post.body|safe }},本來 {{ post.body }} 經模板系統渲染後應該顯示 body 本身的值,但是在後面加上 safe 過濾器後,渲染的值不再是body 本身的值,而是由 safe 函式處理後返回的值。過濾器的用法是在模板變數後加一個 | 管道符號,再加上過濾器的名稱。可以連續使用多個過濾器,例如 {{ var|filter1|filter2 }}。

程式設計師寫部落格免不了要插入一些程式碼,Markdown 的語法使我們容易地書寫程式碼塊,但是目前來說,顯示的程式碼塊裡的程式碼沒有任何顏色,很不美觀,也難以閱讀,要是能夠像我們的編輯器裡一樣讓程式碼高亮就好了。雖然我們在渲染時使用了 codehilite 拓展,但這只是實現程式碼高亮的第一步,還需要簡單的幾步才能達到我們的最終目的。
首先我們需要安裝 Pygments,啟用虛擬環境,執行: pip install Pygments 安裝即可。

搞定了,雖然我們除了安裝了一下 Pygments 什麼也沒做,但 Markdown 使用 Pygments 在後臺為我們做了很多事。如果你開啟部落格詳情頁,找到一段程式碼段,在瀏覽器檢視這段程式碼段的 HTML 原始碼,可以發現 Pygments 的工作原理是把程式碼切分成一個個單詞,然後為這些單詞新增 css 樣式,不同的詞應用不同的樣式,這樣就實現了程式碼顏色的區分,即高亮了語法。為此,還差最後一步,引入一個樣式檔案來給這些被添加了樣式的單詞定義顏色。

在專案的 blog\static\blog\css\highlights\ 目錄下應該能看到很多 .css 樣式檔案,這些檔案是用來提供程式碼高亮樣式的。選擇一個你喜歡的樣式檔案,在 base.html 引入即可(別忘了使用 static 模板標籤)。比如我比較喜歡 github.css 的樣式,那麼引入這個檔案:

templates/base.html

...
<link rel="stylesheet" href="{% static 'blog/css/pace.css' %}">
<link rel="stylesheet" href="{% static 'blog/css/custom.css' %}">
...
+ <link rel="stylesheet" href="{% static 'blog/css/highlights/github.css' %}">

相關推薦

makedown 程式碼

將 Markdown 格式的文字渲染成標準的 HTML 文件是一個複雜的工作,好在已有好心人幫我們完成了這些工作,我們直接使用即可。首先安裝 Markdown,這是一個 Python 第三方庫,啟用虛擬環境,然後使用命令 pip install markdown

Django 實現 Markdown 語法程式碼

實現Markdown 語法顯示 1. 安裝Markdown 進入虛擬環境使用 pip install markdown安裝 2. detail 檢視中渲染 Markdown 將markdown格式的文字渲染成html,只需要呼叫markdown庫的mar

支援 Markdown 語法程式碼

本文是根據大牛部落格教程,自己的知識拾遺,記錄。 Markdown 使用方式,將需要渲染的文字交給markdown處理一下即可 Markdown 的簡單使用 pip install Markdown  blog/views.py import markdown fr

HelloDjango 第 09 篇:讓部落格支援 Markdown 語法程式碼

作者:HelloGitHub-追夢人物 文中涉及的示例程式碼,已同步更新到 HelloGitHub-Team 倉庫 為了讓部落格文章具有良好的排版,顯示更加豐富的格式,我們使用 Markdown 語法來書寫博文。Markdown 是一種 HTML 文字標記語言,只要遵循它約定的語法格式,Markdow

Django搭建部落格(九):為部落格新增程式碼顯示 md文件支援

一、用到的模組 Markdown pygments re 安裝直接使用 pip 安裝最新版本即可 二、支援的 markdown格式 目前只支援 Typora編輯器所支援的 markdown格式。 特別需要注意的是:程式碼塊必須使

vim中 C函式運算子

在 syntax/c.vim檔案中加入以下內容 "highlight Functions syn match cFunctions display "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2 syn match cFunctions

CSDN部落格程式碼顯示

今天分享下在CSDN寫部落格的時候如何設定程式碼高亮 一、首先進入個人部落格介面: 三、設定選擇你的部落格標題、描述和想要的面板並選擇程式碼顯示格式 三、進入管理介面後進入部落格設定 那麼走到這裡,你肯定已經開始迫不及待的去實驗了,你在瞭解了Markdown

vscode中的vue程式碼

1. 商店 -- 安裝 Vetur -- 重新載入   2. 設定首行縮排、程式碼格式化 檔案 -- 首選項 -- 設定:           {            

MarkDown/Html線上轉換(支援程式碼,可複製到微信公眾號、今日頭條)

MarkDown/Html線上轉換能夠將md渲染成html並且能保持程式碼高亮,可以方便的複製待格式的html貼上到微信公眾號,CSDN,簡書,部落格園,開源中國等。 掃碼體驗線上助手小程式 我是java程式碼 public static void main(String[

highlight.js讓程式碼

highlight.js支援幾十種語言和幾十種css 下載highlight.js去,然後解壓出裡面的js和css。 demo需要: 1.引入css和1個js。以及<script>hljs.initHighlightingOnLoad();</script>

通用程式碼外掛(SyntaxHighlighter)

寫這篇博文的起源是我想把自己的部落格弄的更加美觀,相信你也一樣。          首先,我要說SyntaxHighlighter外掛的實現方式及應用示例,然後再說明如何將其應用到自己的部落格,使部落格的程式碼著色更

7個高效能JavaScript程式碼外掛

對於喜歡寫技術部落格的同學來說,一定對程式碼高亮元件非常熟悉。一款優秀的JavaScript程式碼高亮外掛,將會幫助你渲染任何一種程式語言,包括一些關鍵字的著色,以及每行程式碼的縮排等。今天我們要來分享一些高效能的JavaScript程式碼高亮外掛,這些JavaScript程式碼高亮外掛將非常有效地

lucene 中文分詞結果顯示

要使用中文分詞要加入新的依賴  smartcn <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers-smartcn --> <dependency>   &

OneNote安裝程式碼外掛-NoteHighlight

OneNote用起來很舒服,遺憾的是沒有自帶程式碼高亮。花了些時間找到一個外掛NoteHighlight,可以實現常用程式語言的程式碼高亮。 外掛Github地址:https://github.com/elvirbrk/NoteHighlight2016/releases 下載的速度比較慢,

關於typecho0.9程式碼與數學公式支援

閒來無事,搭了一個部落格,記錄一下自己的學習生活,部落格模板取自原來typecho官方部落格,稍加修改,改了一下塗裝,不得不說外掛支援有一些問題,目前大多數外掛已經同步更新到typecho1.0版本,新外掛在0.9版本里都或多或少有點問題,而我的主機在安裝typecho1.0過程中無端報錯,無奈只能用回0.9

路由—tabar路由跳轉設定路由

1、把 a 標籤改成 router-link,並且把herf屬性改成 to="" 到連結地址 2、在路由設定 index.js 檔案中設定路由跳轉的高亮顯示類,這個類是 mui 提供的 3、新建四個元件檔案,在 index.js 檔案中匯入這四個元件,並且在下面的路由配置規則中配

[WP外掛]wordpress程式碼外掛Crayon Syntax Highlighter使用教程

很久以前,介紹過 SyntaxHighlighter ,這也是一款很不錯的wp程式碼高亮外掛,介紹可以根據前面的連結看看,今天主要是想跟大家分享另外一款程式碼高亮外掛Crayon Syntax Highlighter。因為其載入速度快,可以解析程式碼中的html,並且著色效果更好,所以才更換原來的程式碼高亮外

【WordPress外掛】WordPress最好用的程式碼外掛

本博是一個偏向於技術的部落格,主要是網際網路和程式開發相關內容,所以經常會分享一些程式碼給大家看,由於習慣了VS中VA外掛的程式碼高亮顯示,部落格中的黑白程式碼看起來顯得就可讀性非常不高,搜尋了一下Wordpress中的相關外掛,試用了幾個,還是覺得SyntaxHighlighter最適合了,跟我們開發環境

在django下正確使用markdown實現程式碼

最近自己在做一個個人部落格,做到markdown的時候折騰了兩三個小時,網上大部分教程已經失效了或者沒有講清楚。首先在Django下使用markdown目前有兩種方法,一種是用python的markdown庫將需要的內容轉換成html後插入頁面,另一種是使用django內建的markdown

Word 藉助VBA一鍵實現插入交叉引用 Onenote程式碼的實現方法

最近寫論文的時候,經常需要向上或向下插入題注的交叉引用,word 自帶的介面往往需要操作多次,才能實現插入。而平時使用較多的只是交叉引用附近的題注,比如如圖1.1所示,在圖1.1中等,距離較遠的引用則可以直接複製已經存在的交叉引用項,複製的項只要保留原格式複製,仍然是存在超連結的。所以可以藉助 VBA 寫一個