Django管理后台集成kindeditor文本编辑器
django后台默认没有富文本编辑器,我们这里做一下kindeditor集成。
1、在工程目录下新建静态文件目录static/js/,下载kindeditor解压到该目录下。最后目录结构如下:
在kindeditor下新建一个config.js文件:
在config.js文件中添加内容:
KindEditor.ready(function(K) { K.create('textarea[name="body"]', { width : "800px", height : "500px", uploadJson: '/admin/uploads/kindeditor', }); });
其中name根据models.py中对应的字段名修改(就是文章内容对应的变量)
2、在应用目录下新建一个upload.py
内容:
# -*- coding: utf-8 -*- from django.http import HttpResponse from django.conf import settings from django.views.decorators.csrf import csrf_exempt import os import uuid import json import datetime as dt @csrf_exempt def upload_image(request, dir_name): ################## # kindeditor图片上传返回数据格式说明: # {"error": 1, "message": "出错信息"} # {"error": 0, "url": "图片地址"} ################## result = {"error": 1, "message": "上传出错"} files = request.FILES.get("imgFile", None) if files: result = image_upload(files, dir_name) return HttpResponse(json.dumps(result), content_type="application/json") # 目录创建 def upload_generation_dir(dir_name): today = dt.datetime.today() dir_name = dir_name + '/%d/%d/' % (today.year, today.month) if not os.path.exists(settings.MEDIA_ROOT): os.makedirs(settings.MEDIA_ROOT) return dir_name # 图片上传 def image_upload(files, dir_name): # 允许上传文件类型 allow_suffix = ['jpg', 'png', 'jpeg', 'gif', 'bmp'] file_suffix = files.name.split(".")[-1] if file_suffix not in allow_suffix: return {"error": 1, "message": "图片格式不正确"} relative_path_file = upload_generation_dir(dir_name) path = os.path.join(settings.MEDIA_ROOT, relative_path_file) if not os.path.exists(path): # 如果目录不存在创建目录 os.makedirs(path) file_name = str(uuid.uuid1()) + "." + file_suffix path_file = os.path.join(path, file_name) file_url = settings.MEDIA_URL + relative_path_file + file_name open(path_file, 'wb').write(files.file.read()) return {"error": 0, "url": file_url}
3、在settings中添加配置
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ]
4、在admin.py中添加对应管理栏目的media类
class Media: js = ('/static/js/kindeditor/kindeditor-all-min.js', '/static/js/kindeditor/lang/zh-CN.js', '/static/js/kindeditor/config.js')
最终效果如下:
5、配置upload目录
在工程目录下新建uploads目录
6、再次修改settings,添加:
MEDIA_URL = "/uploads/" MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
7、配置urls.py:
添加import模块
from django.conf import settings from news import upload from django.views.static import serve
url中添加:
url(r'^admin/uploads/(?P<dir_name>[^/]+)$', upload.upload_image, name='upload_image'), url(r"^uploads/(?P<path>.*)$", serve, {"document_root": settings.MEDIA_ROOT, }),
最终效果:
至此完成。效果图如下: