安裝django-ckeditor
pip install django-ckeditor
安裝Pillow
Pillow是python的一個圖像處理庫,django-ckeditor需要依賴該庫。最簡單的安裝方法,當然是使用pip,假設你裝過pip,可以直接運行以下命令安裝:
pip install pillow
配置你的django
要使安裝好的django-ckeditor生效,你需要對你的django應用進行一系列配置。
1、在你的settings.py文件中,將ckeditor、ckeditor_uploader添加到INATALLED_APPS中。
2、在你的settings.py文件中,添加CKEDITOR_UPLOAD_PATH配置項。例如,我的是:
MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media") CKEDITOR_UPLOAD_PATH = "article_images"
CHEDITOR_UPLOAD_PATH的作用是設定你通過ckeditor所上傳的文件的存放目錄。需要注意的是,這是一個相對路徑,它相對與你設置的的MEDIA_ROOT。django-ckeditor默認使用django的后台文件存儲系統,這需要你設置好MEDIA_ROOT和MEDIA_URL,如何設置超出了本文的范圍,請自行查看django的官方文檔,請務必確保這兩個設置項是生效的,否則你將看不到你上傳的文件。
比如,我上傳一張名為shiguang.gif的小圖片,該圖片將會被存儲到:
/my/django/app/root/media/article_images/
至此,你的ckeditor已經可以在django中正常使用了。
需要指出的是:在開發階段,這樣設置settings.py已經足夠了。但是,到了正式部署你的應用時,你需要設置好STATIC_ROOT和STATIC_URL,並運行manage.py collectstatic命令,該命令會將ckeditor相關的靜態資源拷貝到你的工程下。
3、在urls.py中增加ck的url配置:url(r'^ckeditor/', include('ckeditor_uploader.urls')),
如何應用ckeditor
django-ckeditor提供了兩個類:RichTextField和CKEditorWidget,分別用於模型和表單。內容型網站通常在后台會有一個文章發布和編輯的界面,如果你想讓該界面擁有一個富文本編輯器,只需按如下方式定義你的django模型:
from django.db import models from ckeditor.fields import RichTextField class Article(models.Model): content = RichTextField('文章標題')
啟動應用看看,這時可以看到文章標題輸入框顯示了富文本編輯框
但是怎么可以用的工具那么少???
別急,在settings目錄中增加如下配置即可
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'], ), } }
現在一個完美的富文本輸入框就完成了,現在可以在admin頁面愉快的輸入內容豐富的文章了~
如何在前端顯示ck輸入的內容
前端要顯示ck輸入的內容時,在需要使用的頁面頭部引入:
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
光這樣你會發現,顯示出來的時候是原始的包含各種html標簽等符號的內容,此時在變量中增加safe過濾即可,如:{{ content | safe }}。
