- 导入模块
pip install django-ckeditor
- 注册应用
INSTALLED_APPS = [ ... 'ckeditor', # 富文本编辑器 'ckeditor_uploader', # 富文本编辑器上传图片模块 ... ]
- 添加配置
# 富文本编辑器ckeditor配置 CKEDITOR_CONFIGS = { 'default': { 'toolbar': 'full', # 工具条功能 'height': 300, # 编辑器高度 # 'width': 300, # 编辑器宽 }, } CKEDITOR_UPLOAD_PATH = '' # 上传图片保存路径,使用了FastDFS,所以此处设为''
- 添加路由
# 总路由处添加 url(r'^ckeditor/', include('ckeditor_uploader.urls')),
- 给商品模型类(SPU)添加需要富文本的三个字段
from ckeditor.fields import RichTextField from ckeditor_uploader.fields import RichTextUploadingField class Goods(BaseModel): """ 商品SPU """ ... desc_detail = RichTextUploadingField(default='', verbose_name='详细介绍') desc_pack = RichTextField(default='', verbose_name='包装信息') desc_service = RichTextUploadingField(default='', verbose_name='售后服务')
- 解决IndexError: list index out of range问题
- 原因:通过Django上传的图片保存到了FastDFS中,而保存在FastDFS中的文件名没有后缀名,ckeditor在处理上传后的文件名按照有后缀名来处理,所以会出现bug错误。
- 解决方法
- 找到虚拟环境目录中的ckeditor_uploader/views.py文件 如:
~/.virtualenvs/md/lib/python3.5/site-packages/ckeditor_uploader/views.py
- 做以下更改
saved_path = self._save_file(request, uploaded_file) if len(str(saved_path).split('.')) > 1: # 在此处添加一个判断 if(str(saved_path).split('.')[1].lower() != 'gif'): self._create_thumbnail_if_needed(backend, saved_path)
- 找到虚拟环境目录中的ckeditor_uploader/views.py文件 如: