Django之在富文本编辑其中添加图片

如何添加富文本编辑器参考点击打开连接python


在上文中的config.js为:git

KindEditor.ready(function(K) {
        K.create('textarea[name=detail]',{
            width:800,
            height:200,
            uploadJson: '/admin/upload/kindeditor'
        });
});



最后一行是url配置,即文件上传时的url


接下来配置media_rootdjango

#Media_url MEDIA_URL = 'static/images/uploads/'  MEDIA_ROOT = os.path.join(BASE_DIR,'images/upload/') #最后upload后面的 / 必定要加上


接下来配置在urls.py中配置映射json

添加:app

url(r'uploads/(?P<path>.*)$',
        'django.views.static.serve',
        {'document_root':settings.MEDIA_ROOT,}),
url(r'^admin/upload/(?P<dir_name>[^/]+)$',
        upload_image,name='upload_image'),


<span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">到   urlpatterns</span>


接下来配置view 将下面的代码粘贴到views中,再导入到urls中编辑器

#coding:utf-8
#!/usr/bin/env python

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):
    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):
    # print dir_name, '----dir_name'
    today = dt.datetime.today()
    dir_name = dir_name+'/%d/%d/' %(today.year, today.month)
    if not os.path.exists(settings.MEDIA_ROOT+dir_name):
        os.makedirs(settings.MEDIA_ROOT+dir_name)
    return dir_name

#图片上传
def image_upload(files, dir_name):
    #容许上传的类型
    allow_suffix = ['jpg','png','jpeg','git','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)
    # print relative_path_file, '-----relative_path_file'
    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+relative_path_file+file_name
    open(path_file,'wb').write(files.file.read())
    return {'error':0,'url':file_url}

点击添加图片的按钮就能够添加图片到富文本编辑器中了


遇到的错误处理:ui

csrf_token错误url

在kindeditor.js中 4155行处添加;spa

// NEW CODE  
        var csrfitems = document.getElementsByName("csrfmiddlewaretoken");
        var csrftoken = "";
        if(csrfitems.length > 0)
        {
                 csrftoken = csrfitems[0].value;
         }

        // END

便可。.net