django markdown web 编辑器大概的介绍
几个编辑工具
简书,一个在线轻博客网站,我正在用的。
Mou OSX 下面的markdown编辑器。支持主题模式及部分的代码模式
csdn csdn最近也开始支持markdown的编辑器了。
stackio,在线编辑器,双页面的模式,非常不错,做的非常不错,如果做博客编辑后续可以专门配置。
markable, 在线编辑器,不太适用
dillinger,和stackio类似,可以直接使用。
js插件式
epiceditor, 这个用的人比较多,直接用js就可以集成,也可以直接看。没有扩展按钮,更加适用于专业的IT人事。
MarkdownEditing,比较专注的markdown编辑器,暂时还没有时间研究
remark,同样的也是插件维护
pagedown-bootstrap,使用bootstrap维护的markdown 编辑器,适用于手机
markdown-js
django下的插件形式
django-pagedown, 当前选择使用的markdown编辑器,可以直接在django里面使用,比较方便。
django-markdownx,同样支持两版展示,觉得没有django-pagedown展示效果好,后续再做具体实验。
django-pagedown
安装
- 使用pip 安装 django-pagedown:
pip install django-pagedown
- 在 setting.py 文件的
installed_app
文件里面添加pagedown
配置
全局替换模式
直接在全局里面配置,在某一个面板中配置这个的话会覆盖这个面板里面的所有TextField的默认widget。
这种模式最直接也最直观的进行了修改
from pagedown.widgets import AdminPagedownWidget
from django.db import models
class FooModelAdmin(models.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': AdminPagedownWidget },
}
其他模式
其他详细模式可以参考项目的git 上面的参考文档 django-pagedown
django-markdown-deux解析markdown
在django 1.6版本就不支持django-markdown包了,这个包很好的完善了这个功能。
安装
使用 sudo pip install django-markdown-deux
来安装即可
有的地方要提示安装markdown2,但是在安装完成之后就可以看到用pip实际把这个包就已经安装进来了
Successfully installed django-markdown-deux-1.0.5 markdown2-2.3.1
当然不要忘记吧markdown-deux装入app中。
直接使用
如果确定Text中只有markdown标签,不进行html标签解析的话,可以直接加入通道标签就可以使用
在模板中添加标签load
{% load markdown_deux_tags %}
在页面中加通道渲染
{{ content|markdown }}
自定义markdown filter
新建一个包文件夹templatetags,然后在里面添加__init__.py
和 djangomarkdown.py
。这个djangomarkdown模板是以后模板过滤器使用的。也不要和现在的模板过滤器冲突了。
myproject/
myapp/
__init__.py
models.py
templatetags/
__init__.py
djangomarkdown.py
views.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"]
)
)
在extras可以填入具体的参量,用于使用markdown的扩展语法。
完成后就可以同时过滤HTML标签和markdown标签了。
markdown-deux 的一些介绍
详情可以参考django-markdown-deux github页面。