歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 讓Markdown支持Django1.6及代碼語法高亮

讓Markdown支持Django1.6及代碼語法高亮

日期:2017/2/28 13:59:13   编辑:Linux教程

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

Django 的詳細介紹:請點這裡
Django 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved