pip install ckeditor
python
INSTALLED_APPS中添加django
'ckeditor',
ui
修改寫入字段的格式url
主題相關配置(settings)插件
CKEDITOR_CONFIGS = { 'default': { 'toolbar': 'full', 'height': 300, 'width': 600, 'tabSpaces': 4, 'extraPlugins': 'codesnippet', # 配置代碼插件 } }
靜態文件相關配置(圖片)code
1 INSTALLED_APPS 中添加 'ckeditor_uploader', 2 文件相關 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') CKEDITOR_UPLOAD_PATH = 'Article_media'
URLconfigorm
from django.conf.urls import url,include from django.views.static import serve
urlpatterns = [ ... url(r'^ckeditor/', include('ckeditor_uploader.urls'),), url(r'^media/(?P<path>.*)', serve, {"document_root": develop.MEDIA_ROOT}), ... ] 或 urlpatterns = [ ... url(r'^ckeditor/', include('ckeditor_uploader.urls'),), ... ] + static(settings.MEDIA_URL, documnets_root = settings.MEDIA_ROOT)
# 重寫admin/Xadmin表單,在form添加裝飾,而不須要修改對象模型,須要重寫clean 方法,將表單拿到的數據替換成須要模型中真正存在的字段。 from ckeditor_uploader.widgets import CKEditorUploadingWidget class ArticleAdminForm(forms.ModelForm): # 模型中並不存在 content_ck 只是在表單中存在, 將在clean 中 提換,將頁面數據和模型分離開 能夠作一些其餘操做 content_ck = forms.CharField(widget=CKEditorUploadingWidget(), label='正文', required=False) # 模型中的真實字段 content = forms.CharField(widget=forms.HiddenInput(), required=False) class Meta: model = Article fields = ( 'category', 'tag', 'desc', 'title', 'editor_type', 'content', 'content_ck', 'status' ) def clean(self): content = self.cleaned_data.get('content_ck') if not content: self.add_error('content_ck', '必填項!') return self.cleaned_data['content'] = content return super().clean()
直接修改模型字段將所有的事情交給admin 雖然省事,不靈活也不利於後期開發維護對象
from ckeditor.fields import RichTextField class Article(models.Model): title = models.CharField(max_length=254, unique=True) body = RichTextField() def __str__(self): return self.title