欢迎来到NiceSpace!祝大家开心每一天!
  • ckeditor
  • django
  • python
Django本地配置ckeditor(windows系统)

    使用Django搭建博客时,还不太清楚通过什么方式来进行博客文章的编辑录入,经过查找资料得知可以通过富文本编辑器编辑文本,会自动生成html格式的文本。最后选择了简单的ckeditor作为博客的文章编辑工具。
    先安装django-ckeditor,cmd下键入pip install django-ckeditor,安装好后将ckeditor和ckeditor_uploader添加到INSTALL_APPS中,如下:

 

  1. INSTALLED_APPS = [  
  2.     'django.contrib.admin',  
  3.     'django.contrib.auth',  
  4.     'django.contrib.contenttypes',  
  5.     'django.contrib.sessions',  
  6.     'django.contrib.messages',  
  7.     'django.contrib.staticfiles',  
  8.     'myblog',  
  9.     'ckeditor',  
  10.     'ckeditor_uploader',  
  11. ]  

 

    之后需要在setting.py中配置如下:

 

  1. STATIC_ROOT = os.path.join(BASE_DIR,'static/')  
  2.   
  3. CKEDITOR_JQUERY_URL = 'https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js'  
  4.   
  5. MEDIA_URL = '/media/'  
  6.   
  7. MEDIA_ROOT = os.path.join(BASE_DIR,'media/')  
  8.   
  9. CKEDITOR_UPLOAD_PATH = 'uploads/'  
  10.   
  11. CKEDITOR_IMAGE_BACKEND = 'PIL'  
  12.   
  13. CKEDITOR_CONFIGS = {  
  14.     'default': {  
  15.         'toolbar': 'full',  
  16.     },  
  17. }  

 

 

    CKEDITOR_JQUERY_URL:是ckeditor初始化时需要jquery库的路径,可以使用本地也可以使用cdn服务器上的。

    CKEDITOR_IMAGE_BACKEND:是ckeditor支持缩略图,需要安装pillow(不使用上传图片也可以不配该项)。

    CKEDITOR_CONFIGS:是ckeditor编辑器控件的设置,这里全显示。

    STATIC_ROOT:是用来存放所有在INSTALLED_APPS中的app的静态文件,在本地部署时可以不需要配置该项,因为使用runserver来运行时是Django来管理静态文件,Django会根据setting.py中配置的STATIC_URL来查找静态文件,但是如果托管到Apache服务器时就是Apache来管理,需要cmd命令在项目路径下执行python manage.py collectstatic来把所有app的静态文件放到STATIC_ROOT中,最后在Apache的httpd.conf中为STATIC_ROOT表示的路径取一个别名,该别名应该与STATIC_URL相同。

    其他配置是ckeditor上传图片有用,博主虽然配置但是并未使用上传图片功能,未验证表示的含义。

    配置好后在models.py中加入代码:

 

  1. from ckeditor.fields import RichTextField  
  2.   
  3. class Blog(models.Model):  
  4.     content = RichTextField(blank=True,null=True,verbose_name="内容")  

 

 

    然后登入Django的admin后台添加新博客时会有嵌入ckeditor编辑器的编辑界面。

    但是博主在最后遇到了点问题,我的Django是1.11版本,使用pip install django-ckeditor安装当时最新的release版django-ckeditor,结果进入admin界面编辑新文章时报了错,大概错误是:build_attrxxxxxxx,记不太清了,查看源码大概的原因是django-ckeditor调用了Django的widget.py中的一个build_attr接口,但是Django1.11版本的这个接口参数变了,而最新的release版django-ckeditor还没加入这一变化的改正。博主在django-ckeditor的github中看到master分支是支持1.11的,只是还没推release版,所以博主卸载了django-ckeditor,在githup中下载了django-ckeditor-master版本,最后可以成功使用ckeditor来编辑博客文章啦。

随机文章
一个简单的CSS加载动画 selenium+python自动登录脚本 python爬虫之爬取捧腹网段子 阿里云ECS(win server2008)部署Django 3D图形学总结(十一)—深度缓存
推荐文章