Django에서 Ckeditor에 그림을 올리는 실현

2489 단어 django
환경:
Python 3.7
Django 2.1
Ckeditor:5.x
1단계:
ckeditor를 다운로드하여 이미지를 찾습니다.js 이 파일, "upload"를 검색하면 이 부분을 찾을 수 있습니다: "Upload",hidden:!0.실제로 업로드 기능이 숨겨졌어요. 위에 있는 거!0을 0으로 바꾸고 편집기를 열면 업로드 기능을 찾을 수 있습니다.
2단계:
ckeditor/config에서 가능합니다.js에서 설정합니다.가입:config.filebrowserUploadUrl="/uploadimg/";#이것은 post 그림의 URL입니다
3단계:
수신한views 쓰기 (그림을 재단하는 등의 작업을 하려면 PIL을 사용할 수 있습니다)
def sceneImgUpload(request):
    if request.method == 'POST':
        callback = request.GET.get('CKEditorFuncNum')
        try:
            path = "static/upload/" + time.strftime("%Y%m%d%H%M%S", time.localtime())
            f = request.FILES["upload"]
            file_name = path + "_" + f.name
            des_origin_f = open(file_name, "wb+")
            for chunk in f.chunks():
                des_origin_f.write(chunk)
            des_origin_f.close()
        except Exception as e:
            print(e)
        res = "window.parent.CKEDITOR.tools.callFunction(" + callback + ",'/" + file_name + "', '');"
        return HttpResponse(res)
    else:
        raise Http404()

4단계: csrf를 사용하면 오류가 발생합니다.ckeditor는 csrf를 자체로 가지고 있지 않기 때문에 스스로 추가해야 합니다.
ckeditor를 엽니다.js 소스 파일, 함수 삽입:
function getCookie(name){ 
var strCookie=document.cookie; 
var arrCookie=strCookie.split("; "); 
for(var i=0;i

다음 검색: multipart/form-data, 이 form에 삽입된 form을 찾을 수 있습니다.

csrf 검증을 완료합니다.
계속:
ckeditor는 자체적으로 비동기 제출을 가지고 있기 때문에, 자신이 설정해서 제출할 경우 업로드 그림 선택 상자:
                            {% csrf_token %}                                                                                       

기본적으로 비동기 제출이 아니기 때문에, 비동기 제출이 필요하면 두 가지 참고 방법이 있습니다: 1: 플러그인 ajaxupload를 사용합니다.js
2: iframe 사용
-------------------------저자: 여인숙 출처: CSDN 원문:https://blog.csdn.net/ypq5566/article/details/37594371판권 성명: 본고는 블로거 여인숙의 을 바탕으로 변경하여 더욱 높은 버전의ckeditor와 어울린다.

좋은 웹페이지 즐겨찾기