1 这一章主要是介绍如何增加富文本编辑器的功能
1.1 为什么需要富文本编辑器:为了使得文本内容丰富多彩,格式也好看点呗
2 实现方法很多,我主要讲讲自己的方法,这个实在写博文时增加这个富文本功能:
2.1 下载kindeditor
KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。
作者:Ljian1992
链接:https://www.jianshu.com/p/d03297bf2d54
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
2.2下载地址: http://kindeditor.net/down.php,下载后解压,放在static目录下的js目录
2.2 定义ModelAdmin的媒体文件
class ArticleAdmin(admin.ModelAdmin):
# fields = ('title', 'desc', 'content')
list_display = ('title', 'desc', 'content', 'click_count')
list_display_links = ('title', 'desc', 'content', )
list_editable = ('click_count',)
list_filter = ('title', 'content') # 过滤器
class Media:
js = (
'/static/js/kindeditor-4.1.11/kindeditor-all-min.js',
'/static/js/kindeditor-4.1.11/lang/zh-CN.js',
'/static/js/kindeditor-4.1.11/config.js',
)
2.3 修改kindeditor的配置文件
具体做法: 在static/js/kindeditor-4.1.11目录下面创建一个config.js,并在里面写入相关代码:
KindEditor.ready(function(K) {
K.editor = K.create('#id_content', {
width:'500px',
height:'360px',
});
});
我的理解是当要跳转到编写博文的页面时就会加载这个富文本所需的媒体文件,并且通过找到文本编辑区域,设置相应的宽高
这样就能成功了,看看下面截图:
3 虽然弄出来了,我并不高兴,因为感觉有点晕,我们还需要了解一下admin的运行原理
3.1 加载setting.py配置
INSTALLED_APPS = [
'django.contrib.admin',
xxxxx,
xxxxx,
xxxxx
其他代码等等
]
3.2 寻找admin模块,django.contrib.admin的_init_.py中,Django自动去所有应用寻找admin.py模块,并执行
def autodiscover(): # autodiscover_modules 翻译一下就是自动搜索模块的意思
autodiscover_modules('admin', register_to=site)
3.3 执行admin.py,注册model:
3.4 admin.site.register()中为site对象的_registry字典赋值,key是model, value是model的配置类(具体查看源码)
self._registry[model] = admin_class(model, self)
3.5 执行路由映射关系
from django.contrib import admin
from django.urls import path, re_path
from blog.views import *
urlpatterns = [
path('admin/', admin.site.urls),
]
再次调用site对象,执行.urls方法,循环site对象的_registry属性,根据app和model名称,生成Django后台管理的url映射。
3.6 我们在Django后台中执行的增删改查,其实就是执行了ModelAdmin中的以下方法:
def changelist_view() 显示列表
def add_view()增加
def change_view() 修改
def delete_view() 删除
我总结一下,就是,我们要进入后台管理即http://127.0.0.1:8000/admin/时, django会加载settings.pyl里面的django.contrib.admin,然后再寻找admin模块,接着就是在admin.py中注册model, 就是注册相应的类,然而我的这个类包含了实现富文本编辑器所需的一些文件,当执行url映射(相当于在浏览器输入网址,然后回车的意思)时,加载的时候这些文件就被加载到相应的页面了对吧,这样不就可以实现这个富文本编辑了?
欢迎批评指正,thanks
参考链接