背景
不得不说,markdown是写(zhuang)作(bi)利器,在用django时我就将其认定为必备功能之一。对于markdown的支持,Django本来有集成的markdown功能,在django.contrib.markup
中,但自1.6以来,这个库整个就被砍掉了,只能用第三方来实现。
我摸索了将近一个小时,终于找到了一种傻瓜操作,功能齐全的库,那就是django-markdown-deux
。
三步实现法
第一步 安装
使用pip
简单粗暴来安装:
如果不是管理员权限,要用加上sudo
,因为有创建文件夹,语法如下:
第二步 应用设置
将'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开发,暂时想做点个人站。