django pagedown web 编辑器

2016/5/24 posted in  python

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

安装

  1. 使用pip 安装 django-pagedown: pip install django-pagedown
  2. 在 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__.pydjangomarkdown.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页面。