django轻松使用富文本编辑器CKEditor的方法


Posted in Python onMarch 30, 2017

前言

django是一个容易快速上手的web框架,用它来创建内容驱动型的网站(比如独立博客)十分方便。遗憾的是,django并没有提供官方的富文本编辑器,而后者恰好是内容型网站后台管理中不可或缺的控件。ckeditor是一款基于javascript,使用非常广泛的开源网页编辑器。它可以和多种编程语言相结合,python当然也不例外。本文就来介绍一下如何在基于django博客系统如何完美地用上ckeditor。

使用方法

1、安装

pip install django-ckeditor

2、将‘ckeditor'settings.py中的INSTALLED_APPS

3、由于djang-ckeditor在ckeditor-init.js文件中使用了JQuery,所以要在settings.py中设置CKEDITOR_JQUERY_URL来指定JQuery库的路径,例如:

CKEDITOR_JQUERY_URL ='https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js'

4、设定STATIC_ROOT,执行python manage.py collectstatic,将CKEditor需要的媒体资源拷入STATIC_ROOT指定的路径中。

STATIC_ROOT = os.path.join(BASE_DIR,'static/')

django轻松使用富文本编辑器CKEditor的方法

5、

from django.db import models
from ckeditor.fields import RichTextField

class Blog(models.Model):
 title = models.CharField(max_length=50,verbose_name="标题")
 content = RichTextField(blank=True,null=True,verbose_name="内容")

 def __unicode__(self):
 return self.name

效果:

django轻松使用富文本编辑器CKEditor的方法

文件上传

1、在settings.py中的INSTALLED_APPS中添加ckeditor_uploader

2、CKEditor使用Django的存储API,默认使用Django的文件存储,会用到MEDIA_ROOT和MEDIA_URL,需要在settings.py中定义,此外还可以指定CKEDITOR_UPLOAD_PATH,它位于MEDIA_ROOT下:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media/')
CKEDITOR_UPLOAD_PATH = 'uploads/'

3、在项目的urls.py中添加CKEditor的URL映射

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

如果不加,可能会出现以下错误:

django轻松使用富文本编辑器CKEditor的方法

4、(可选项) 在settings.py中加入CKEDITOR_IMAGE_BACKEND ,使能thumbnails,例如:

CKEDITOR_IMAGE_BACKEND = 'PIL'
from ckeditor_uploader.fields import RichTextUploadingField
class Post(models.Model):
 content = RichTextUploadingField()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python爬取读者并制作成PDF
Mar 10 Python
python批量提取word内信息
Aug 09 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
python根据多个文件名批量查找文件
Aug 13 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
关于tf.reverse_sequence()简述
Jan 20 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
python下读取公私钥做加解密实例详解
Mar 29 #Python
django开发之settings.py中变量的全局引用详解
Mar 29 #Python
深入理解Python3中的http.client模块
Mar 29 #Python
Python 中迭代器与生成器实例详解
Mar 29 #Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 #Python
windows系统下Python环境搭建教程
Mar 28 #Python
Python中Django 后台自定义表单控件
Mar 28 #Python
You might like
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
php中的静态变量的基本用法
2014/03/20 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
详解js类型判断
2018/05/22 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
django解决跨域请求的问题详解
2019/01/20 Python
安装docker-compose的两种最简方法
2019/07/30 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
班级学习计划书
2014/04/27 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
庐山导游词
2015/02/03 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL