2021-05-12 14:32:11
讓Markdown支援Django1.6及程式碼語法高亮
Django專案升級到1.6後,發現django.contrib.markup已經被移除了,其實早在1.5就不推薦使用,標記為了deprecated.如果想讓的markdown語法能繼續正常使用的話,你可以自定義一個過濾器.
#my_markup.py
mport markdown
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.encoding import force_unicode
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter(is_safe=True)
@stringfilter
def my_markdown(value):
extensions = ["nl2br", ]
return mark_safe(markdown.markdown(force_unicode(value),
extensions,
safe_mode=True,
enable_attributes=False))
儲存在app的templatetags目錄下面,在模板中載入就行了.
{% load my_markup %}
{{ value|my_markdown }}
--------------------------------------分割線 --------------------------------------
由於Django1.6預設不支援markdown了,所以需要自己寫過濾器。現在遇到一個新的麻煩是,程式碼塊預設情況下沒有任何高亮顯示,看起來非常的單調。因此今天研究了一番。
Python的markdown模組功能很完善,亮點是它還能支援擴充套件外掛,CodeHilite就是用來做程式碼高亮擴充套件功能的。使用非常簡單,
def md1(value):
extensions = ["nl2br", "codehilite"]
return mark_safe(markdown.markdown(force_unicode(value),
extensions,
safe_mode=True,
enable_attributes=False))
其實就是把codehilite
加入到extensions列表中去就可以了,此時由markdown渲染後檔案的程式碼塊所在的div標籤會多了一個class屬性class="codehilite"
。但是事情還沒完。程式碼還沒有真正加上高亮。真正的高亮功能是由Pygments來完成的。
因此還要安裝Pygments
,安裝方式也非常簡單
pip install pygments
如果你人品和我一樣差的話,需要去 Bitbucket下載他的原始碼才能完成安裝。下載下來解壓執行:
python setup.py install
順利安裝完成後,還缺少一樣東西,既然是程式碼高亮的話,肯定是有CSS來驅動的,pygments預設是不帶樣式的。不過你可以借助它生成一個預設的css。
E:>pygmentize -S default -f html > default.css
把default.css放到專案中去,此時就能看到高亮程式碼了。如果你不喜歡這個樣式的話,pygments-css提供了很多樣式供你選擇。
Django1.8返回json字串和接收post的json字串內容 http://www.linuxidc.com/Linux/2015-07/120226.htm
如何使用 Docker 元件開發 Django 專案? http://www.linuxidc.com/Linux/2015-07/119961.htm
Ubuntu Server 12.04 安裝Nginx+uWSGI+Django環境 http://www.linuxidc.com/Linux/2012-05/60639.htm
Django+Nginx+uWSGI 部署 http://www.linuxidc.com/Linux/2013-02/79862.htm
Django實戰教學 http://www.linuxidc.com/Linux/2013-09/90277.htm
Django Python MySQL Linux 開發環境搭建 http://www.linuxidc.com/Linux/2013-09/90638.htm
相關文章