试了好几个富文本编辑器老是不成功,这个终于成功了,就写下来记录下。
因为这个是经过django封装的,所以配置简单。
第一步是下载,好像pip可以安装pip install django-ckeditor
源码也可以。直接clone 项目地址:https://github.com/django-ckeditor/django-ckeditor下载后直接python setup.py install安装就好
有可能你的环境中没有pillow,它是一个图像处理库,django-ckeditor依赖于它
第一步:将ckeditor增加到INATALLED_APPS中
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'ckeditor', 'article', )
第二步,增加CKEDITORUPLOADPATH配置项
MEDIA_URL = "/media/"MEDIA_ROOT = os.path.join(BASE_DIR, "media")CKEDITOR_UPLOAD_PATH = "article_p_w_picpaths"
然后在django应用中为ckeditor设置url:
url(r'^ckeditor/', include('ckeditor_uploader.urls')),#按照官网的设置就失败,这样才成功
这个就可以有一个简单的富文本编辑器了。
当然简单到不像话,所以我们也可以对这个编辑器进行配置
在setting文件中加入如下配置
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'], ), } }
当然以上都只是环境的配置,现在我们说说怎么使用哈
django-ckeditor提供了两个类:RichTextField和CKEditorWidget,分别用于模型和表单。内容型网站通常在后台会有一个文章发布和编辑的界面,如果你想让该界面拥有一个富文本编辑器,只需按如下方式定义你的django模型:
from django.db import modelsfrom ckeditor.fields import RichTextFieldclass Article(models.Model): content = RichTextField('正文')
当然为了在后台显示我们的成果。我们得先把Article注册到后台。在admin.py中:
from django.contrib import adminfrom models import Article admin.site.register(Article)
转载于:https://blog.51cto.com/xiaofengfeng/1885777