Django+Markdown+Pygments 支持Markdown 实现代码高亮
Markdown部分
- 安装markdown
pip install markdown
- 在
view.py
中导入包from markdown import markdown
-
使用
markdown()
将需要用markdown格式解析的内容(字符串)封装起来。 注:models里面有一个Article类,Article里面有一项是content存储博客内容。def detail(request, id): try: post = Article.objects.get(id=str(id)) #for markdown test post.content = markdown(post.content) except Article.DoesNotExist: raise Http404 return render(request, 'post.html', {'post' : post})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-
在后台编辑博文
> ## This is a test.
>
> 1. This is the first list item.
> 2. This is the second list item. -
前台显示
{{ post.content | safe}}
,注意使用了safe过滤器,防止内容在输出前被解析。
ps:和这个问题是一个原因,django数据库里Html代码,如何在前台让浏览器正确解析? - 完
Pygments部分
- 官网下载最新的版本的Pygments。
- 使用
pip
安装下载的包Pygments-2.0.2.tar.gz
,敲命令pip install Pygments-2.0.2.tar
。 - 运行如下命令
pygmentize -S default -f html -a .codehilite > code.css
,在文件夹下会发现生成了code.css文件,将这个css文件加入到你的static文件夹下style里面(随便你放哪里找得到就好)。 - 在需要高亮的html文件里面导入刚刚生成的css文件,例如我的是
<link type="text/css" rel="stylesheet" href="{{ STATIC_URL }}styles/code.css"/>
。 - 还记得刚刚代码里面的
post.content = markdown(post.content)
吧,在后面加上['codehilite']
,即为post.content = markdown(post.content,['codehilite'])
。 - 刷新前台,显示代码已经高亮。
- 完
人生当自勉,学习需坚持。从这一刻开始,我依旧是我,只是心境再不同。不论今后的路如何,我都会在心底默默鼓励自己,坚持不懈,等待那一场破茧的美丽。