搭建Django博客(5)Markdown语法显示文章

安装 Markdown 库

1
$ pip install markdown2

在 blogapp 下建立新文件夹templatetags,然后定义自己的 template filter,在templatetags中新建_init.py, 让文件夹可以被看做一个包,在文件夹中新建custom_markdown.py文件并编辑

1
2
3
4
5
6
7
8
9
10
11
12
import markdown2
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.encoding import force_text
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter(is_safe=True)
@stringfilter
def custom_markdown(value):
return mark_safe(markdown2.markdown(force_text(value), extras=["fenced-code-blocks", "cuddled-lists", "metadata", "tables", "spoiler"]))

对模板文件中需要 Markdown 显示的地方增加custom_markdown过滤器

1
2
3
4
5
{% load custom_markdown %}
.
.
.
{{ post.content|custom_markdown }}