不死心把后台的内容编辑框的预览改成了django-pagedown

Markdown语法确实比HTML好用

但是后台缺少的是一个能实时预览我输入的markdown语法是否正确的插件。有人说Editor.md已经很长时间没有维护了,于是心里就有点不想用了。
这里了解到了django-pagedown,于是又去啃英文文档了。

最简单的办法使用django-pagedown

本来我也没有必要把这英文文档全部都看懂,只要能满足我的需要就可以了。

  • 首先安装django-pagedown,最简单是运行pip install django-pagedown
  • 然后把pagedown加到settings.py里面的INSTALLED_APPS,像这样:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #settings.py
    ...
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Post',
    'pagedown',
    ]
    ...
  • 如果settings.pyDebug=False,就运行python manage.py collectstatics,把所需的静态文件收集起来。

  • 修改项目app目录下的admin.py,添加如下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #admin.py
    from pagedown.widgets import AdminPagedownWidget
    from django.db import models
    ...
    class FooModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
    models.TextField: {'widget': AdminPagedownWidget}
    }
    ...
    admin.site.register(Post, FooModelAdmin)
    ...

官方文档的说法就是,只要Post里面是TextField的字段,都会出现pagedown编辑框,并出现实时预览。

配置完成

理论上来说,以上步骤完成,就可以实现后台实时预览了,看看效果:

请不要过多的在意css,毕竟后台美化还没有提上日程。
对了,代码不高亮是正常的。代码高亮是Pygments处理的,后台没有必要让它高亮,于是只要出现代码区域,就是正常的。

我有一个想法,不知道对不对。我现在后台实时预览markdown,使用的是django-pagedown,前台渲染markdown,使用的是mistune,那么,可不可以把前台和后台统一成一个插件,比如django-pagedown