一:在config.js中加入:
KindEditor.ready(function(K) {
window.editor = K.create('textarea[name=text]', {
// K.create('#id_text', {
resizeType:1,
allowPreviewEmoticons : false,
allowImageRemote : false,
uploadJson : '/admin/upload/kindeditor',
width: '600px',
height: '200px',
});
});
在urls.py中配置
url(r'^admin/upload/(?P<dir_name>[^/]+)$', upload_image, name='upload_image'),
dir_name是文件的存储路径。
二:upload_image是自定义的保存图片的函数。
from django.http import HttpResponse
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
import os
import datetime as dt
import uuid
@csrf_exempt
def upload_image(request, dir_name):
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()
url_part = dir_name + '/%d/%d/' % (today.year, today.month)
dir_name = os.path.join(dir_name, str(today.year), str(today.month))
print("*********", os.path.join(settings.MEDIA_ROOT, dir_name))
if not os.path.exists(os.path.join(settings.MEDIA_ROOT, dir_name)):
os.makedirs(os.path.join(settings.MEDIA_ROOT, dir_name))
return dir_name,url_part
# 图片上传
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, url_part = upload_generation_dir(dir_name)
path = os.path.join(settings.MEDIA_ROOT, relative_path_file)
print("&&&&path", path)
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 + url_part +file_name
open(path_file, 'wb').write(files.file.read())
return {"error": 0, "url": file_url}
三:使用django配置upload来显示图片。
from django.views.static import serve
url(r'^upload/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT, }),
四:setting增加media的配置
MEDIA_ROOT = os.path.join(BASE_DIR, '').replace("\\", '/')
MEDIA_URL = '/'
效果: