Vue.js中使用wangEditor富文本编辑器


1.前端代码

前端HTML




欢迎使用 wangEditor 富文本编辑器

添加

前端js


2.后端代码(python + Django)

django路由

from django.conf.urls import patterns

from home_application import host_view

urlpatterns = patterns(
    'home_application.views',
    (r'^$', 'home'),
    (r'^api/test/$', "test"),
    (r'^upload_img/$', host_view.upload_img),
    (r'^media/(?P\d+).(?P\w+)', host_view.get_media),
    ...
)

django视图

import os
import time

from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse, HttpResponse
from django.utils.encoding import escape_uri_path

def check_upload_wrapper(func):
    def inner(*args, **kwargs):
        if not os.path.exists("media/"):
            os.makedirs("media/")
        return func(*args, **kwargs)
    return inner

def create_blog(request):
    data = json.loads(request.body)
    content = data.get("content")
    print(content)
    return JsonResponse({"result": True})

def get_media(request, name, postfix):
    file_name = name + "." + postfix
    file_path = os.path.join("media", file_name)
    file = open(file_path, 'rb')
    response = HttpResponse(file)
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = "attachment;filename*=utf-8''{}".format(escape_uri_path(file_name))
    return response

@csrf_exempt
@check_upload_wrapper
def upload_img(request):
    file_list = []

    for k, v in request.FILES.items():
        t = time.strftime('%Y%m%d%H%M%S')
        now_file_name = t + '.' + k.split('.')[-1]
        file_path = os.path.join('media', now_file_name)

        with open(file_path, "ab") as f:
            f.write(v.read())
        file_list.append("/" + file_path)

    return JsonResponse({"errno": 0, "data": file_list})