django-ckeditor

一、前言

之前写了个测试报告的模版页面,后期同时需要上传图片,就需要使用富文本编辑器了,这里选择了django-ckeditor。

二、操作步骤

1、安装

pip install django-ckeditor

pip install pillow

2、配置

在settings.py中添加配置:

(1)配置1:

settings配置

MEDIA_URL ="/static/media/"

MEDIA_ROOT = os.path.join(BASE_DIR,"static/media")

CKEDITOR_UPLOAD_PATH ="upload/"

CKEDITOR_IMAGE_BACKEND ="pillow"

CKEDITOR_CONFIGS = {

'default': {

'toolbar': (

['div','Source','-','Save','NewPage','Preview','-','Templates'],

['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],

['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],

['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],

['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],

['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],

['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],

['Link','Unlink','Anchor'],

['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],

['Styles','Format','Font','FontSize'],

['TextColor','BGColor'],

['Maximize','ShowBlocks','-','About','pbckcode'],

),

# 插件

        'extraPlugins':','.join(['codesnippet','uploadimage','widget','lineutils',]),

}

}

(2)配置2:


install_apps配置

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'ckeditor',

'ckeditor_uploader'

]

在urls.py添加配置:


urls配置

urlpatterns = [

url(r'^ckeditor/', include('ckeditor_uploader.urls')),

]

3、至此应可以使用后台管理进行富文本编辑了


后台管理富文本编辑

三、没有结束

当然,如果以上能够满足你的需求,就不需要往下看了,但是我的需求以上是不能满足的,那么继续。我们看看如何将这个富文本添加到正常的前端页面吧。

1、配置

以上的配置还是需要的,不再赘述。

2、继续配置

这里我遇到了一个坑,不管如何按照网上配置都无法正常加载出页面来,而且加载出来也无法进行上传图片。

(1)前端页面加载js配置

注意:这里有连个js文件很重要,如下

ckeditor-init.js

keditor.js

这两个文件不注意根本想不到怎么弄,因为以上在后台管理应用很正常,为啥在前端就无法使用了呢?继续配置。

我是这么处理的,将下面文件拷贝放在static目录下:


js文件

因为js文件就在这里面:


js文件


static下的js文件

这样就可以继续往下走了:


页面配置加载js文件

<script src="{% static 'ckeditor/ckeditor-init.js' %}" data-ckeditor-basepath="/static/ckeditor/ckeditor/" id="ckeditor-init-script"></script>

<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>

(2)前端页面富文本框配置

在前端页面加上这一句:

<textarea class="ckeditor" cols="50" id="editor1" rows="100" name="goodsdesc"></textarea>

不过这样只是一个富文本框而已,就像这样:


原始富文本框

(3)ckeditor配置


格式修饰配置

在这个文件里可以对富文本框进行一系列配置,这里列出我的配置:


ckeditor配置

CKEDITOR.editorConfig = function( config ) {

config.language = 'zh-cn';

config.uiColor = '';

config.extraPlugins = 'image'; config.filebrowserUploadUrl = '/upload-image/'; config.toolbar = [ { name: 'document', items: ['Source', '-', 'Preview', 'Print', '-'] }, { name: 'clipboard', items: ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo'] }, { name: 'editing', items: ['Find', 'Replace', '-', 'Styles'] }, '/', { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'Strike', '-', 'RemoveFormat'] }, { name: 'paragraph', items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'] }, { name: 'links', items: ['Link', 'Unlink'] }, { name: 'insert', items: ['Image', 'Flash', 'Table'] }, { name: 'tools', items: ['ShowBlocks'] } ]; config.removeDialogTabs = 'image:advanced;image:Link';//隐藏超链接与高级选项 config.toolbarCanCollapse = true; config.image_previewText=' ';};

格式自己调整下吧,这里面“config.filebrowserUploadUrl ='/upload-image/';“这个需要自己填写自己的url地址,就是一个上传图片的方法:


上传图片方法

@csrf_exempt

def upload_image(request):

    if request.session.get('is_login', None) is None:

        return redirect("/userlogin/index/")

    if request.method == 'POST':

        # callback = str(request.GET.get('CKEditorFuncNum'))

        callback = str(1)

        try:

            path = "static/media/upload/photos/" + 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:

                des_origin_f.write(chunk)

            des_origin_f.close()

        except Exception as e:

            print(e)

        res = r"<script>window.parent.CKEDITOR.tools.callFunction("+callback+",'/"+file_name+"', '');</script>"

       HttpResponse(res)

        return JsonResponse({"uploaded": 1, "fileName": time.strftime("%Y%m%d%H%M%S",time.localtime()) + '_' + f.name, "url": "http://" + request.get_host() + "/" + file_name}) else: raise Http404()

格式自己调整下,url路径:

url(r'^upload-image', books.upload_image, name='upload_image'),

(4)效果


修饰后富文本框


上传界面


至此完成,不过上传图片的方法需要好好看下吧,里面涉及到settings.py文件里的static路径等等,有问题再看吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容