唐僧肉片

自留地,My Private Place

0%

不死心把后台的内容编辑框的预览改成了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