原文地址

试了好几个富文本编辑器老是不成功,这个终于成功了,就写下来记录下。

因为这个是经过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)