背景
不得不说,markdown是写(zhuang)作(bi)利器,在用django时我就将其认定为必备功能之一。对于markdown的支持,Django本来有集成的markdown功能,在django.contrib.markup
中,但自1.6以来,这个库整个就被砍掉了,只能用第三方来实现。
我摸索了将近一个小时,终于找到了一种傻瓜操作,功能齐全的库,那就是django-markdown-deux
。
三步实现法
第一步 安装
使用pip
简单粗暴来安装:
pip install django-markdown-deux
如果不是管理员权限,要用加上sudo
,因为有创建文件夹,语法如下:
sudo pip install django-markdown-deux
第二步 应用设置
将'markdown_deux'添加进INSTALLED_APPS
列表:
INSTALLED_APPS = ( ... 'markdown_deux', ... )
第三步 模版设置
在模版中需要2段代码:
- 模版头部载入模块
{% load markdown_deux_tags %}
; - 内容调用部分加入过滤器
markdown
示例代码:
{% load markdown_deux_tags %} {% extends 'base.html' %} {% block content %} <div class="main_body"> <h1>{{ post.title }}</h1> {{ post.content|markdown }} </div> {% endblock %}
注意:这里需要注意的是,并不是说在*base模版*中加入{% load markdown_deux_tags %}
,其他模版都不需要调用了(我之前就搞错了)。而是只需要在使用markdown过滤器的模版中加入{% load markdown_deux_tags %}
即可,比如我一个项目中的post.html
和posts_list.html
。
大功告成
完成以上三步就大功告成了,你可以在后台输入框中输入markdown语法,在前台就能看到已经转化过的内容。
如后台输入:
#测试篇
##头号大将 - 瑟卡
**标志**:黑桃
**猜测对手**:萨博或zero
在前台渲染成的HTML代码如下:
<h1>测试篇</h1> <h2>头号大将 - 瑟卡</h2> <b>标志</b>:黑桃 <b>猜测对手</b>:萨博或zero
参考资料
StackOverFlow的How do I implement markdown in Django 1.6 app
django-markdown-deux的github官方文档
Wow!Ubuntu的Markdown语法指南
备注
- 题图来自Quora;
- 最近开始学Django了,目前刚走出官方教程,尚不明确最终目标,也没确定是否转向django开发,暂时想做点个人站。
还没有评论,来说两句吧...