1. 程式人生 > >Django 配置支援 Markdown 語法

Django 配置支援 Markdown 語法

Django 曾經支援 Markdown,但在 1.6 版本中去掉了。雖然有第三方開發的如 Django-Markdown 等外掛支援,但其實最簡單的辦法是自己直接做一個。同時也更便於測試、除錯。

目前 Python 的 Markdown 庫有兩個,Markdown 和 Markdown2。其中 Markdown2 宣稱其效能要遠高於 Markdown。在網站應用中,效能是很重要的引數,經過實測,Markdown2 確實性能好於 Markdown。

1. 建立一個新的 Template Tag

在 myproject/myapp 目錄下,建立子目錄 templagetags,內部新增如下兩個檔案:__init__.py, djangomarkdown.py

編輯 djangomarkdown.py

# -*- coding: utf-8 -*-

import markdown2

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 djangomarkdown(value):
    return mark_safe(markdown2.markdown(force_unicode(value),
                                        extras=["code-friendly"]
                                        )
                     )

如此,一個新的 Templage Tag "djangomarkdown" 已被建立。

2. 在 Template 中使用

很簡單:

{% load djangomarkdown %}
{{ value|djangomarkdown }}

3. 參考文件

4. 版本

Python2.7, Django1.6