喵吉欧尼酱

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

常见的富文本编辑器

ckeditor、ueditor、kindeditor、tinymce、...

django-admin中添加富文本编辑器的几种方式:
1、使用第三方的一些库,如django-ckeditor
(https://pypi.python.org/pypi/django-ckeditor)
2、在admin中定义富文本编辑器的widget
3、通过定义ModelAdmin的媒体文件

 

cofing配置

KindEditor.ready(function(K) {
                K.create('textarea[name=content]',{

                    width:800,
                    height:400,
                });
        });

 

 


url配置

from blog.upload import upload_image
urlpatterns = [
    # url(r'uploads/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.MEDIA_ROOT})
    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'),
    url(r'^admin/', admin.site.urls),
    url(r'^$', index,name='index'),

 

config配置

KindEditor.ready(function(K) {
                K.create('textarea[name=content]',{

                    width:'800px',
                    height:'400px',
                    uploadJson: '/admin/upload/kindeditor',
                });
        });

blog创建py.配置upload

# _*_ coding:utf-8 _*_
__author__ = 'admin'
__date__ = 2017 / 10 / 15

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 + dir_name):
        os.makedirs(settings.MEDIA_ROOT + dir_name)
    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}

 

posted on 2017-10-15 13:33  喵吉欧尼酱  阅读(492)  评论(0)    收藏  举报