- 安装
$ pip install django-ckeditor
- 注册
# setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 将 django-ckeditor 注册到该列表中
'ckeditor',
]
- 创建模型
from django.db import models
from ckeditor.fields import RichTextField
class Article(models.Model):
title = models.CharField(verbose_name='标题', max_length=255, null=True)
body = RichTextField()
class Meta:
db_table = 'blog_article'
app_label = 'article'
verbose_name = '文章'
verbose_name_plural = verbose_name
def __str__(self):
return self.title
- 生成迁移文件
$ python manage.py makemigrations
$ python manage.py migrate
- 进入后台添加文章,你就会看到富文本编辑器了
- 添加更多配置
# setting.py
# ckeditor
CKEDITOR_CONFIGS = {
# 将这份配置命名为 my_config
'my_config': {
'skin': 'moono-lisa',
'toolbar_Basic': [
['Source', '-', 'Bold', 'Italic']
],
'toolbar_Full': [
['Styles', 'Format', 'Bold', 'Italic', 'Underline', 'Strike', 'SpellChecker', 'Undo', 'Redo'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', 'HorizontalRule'],
['TextColor', 'BGColor'],
['Smiley', 'SpecialChar'],
# 在工具栏中添加该功能的按钮
['CodeSnippet'], ['Source'],
],
'toolbar': 'Full',
'height': 291,
'width': 835,
'filebrowserWindowWidth': 940,
'filebrowserWindowHeight': 725,
# 添加的插件
'extraPlugins': 'codesnippet',
}
}
- 在模型文件添加以下内容
from django.db import models
from ckeditor.fields import RichTextField
class Article(models.Model):
title = models.CharField(verbose_name='标题', max_length=255, null=True)
# 添加参数 config_name 指定使用的配置
body = RichTextField(config_name='my_config')
class Meta:
db_table = 'blog_article'
app_label = 'article'
verbose_name = '文章'
verbose_name_plural = verbose_name
def __str__(self):
return self.title
- 代码高亮
<link rel="stylesheet" href="/static/css/googlecode.css">
<script src="/static/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
添加图片
默认是不能上传图片的,这里教大家怎么上传图片
- 下载
$ pip install pillow
- 注册
# setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'ckeditor',
# 添加以下字段
'ckeditor_uploader',
]
图片自适应
使用ckeditor中发现,上传图片时,总会自动给img标签添加width和height的style内联样式
- 在ckeditor中的config.js文件中,找到editorConfig并设置disallowedContent属性
CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
# 添加
config.disallowedContent='img{width,height};img[width,height]';
};
- 引入css样式
p img{
width: auto;
height: auto;
max-width: 100%;
display: block;
}
修改代码的样式
代码高亮需要添加额外的插件Prism。在Prism插件官方页面下载(也可以点击这里直接下载)后,将解压出来的
prism
放到env\Lib\site-packages\ckeditor\static\ckeditor\ckeditor\plugins
目录下。注意env是你创建的虚拟环境的目录。之前你安装的所有库都在这个env目录中的。
https://www.jianshu.com/p/a14970431762
然后在Prism官网选择主题:
- 根据喜好选择一个喜欢的主题
- 然后选择需要高亮的语言。不清楚就可以全选
- 勾选行号插件
- 最后点击
DOWNLOAD CSS
下载样式
在static
目录中新建prism
目录,将下载好的CSS文件放进去。
注意这里的static是项目中的静态文件目录(与前面的章节相同),而不是env文件夹中的static目录。
然后在需要代码高亮的模板文件中引用prism的静态文件,对代码进行渲染:
templates/article/detail.html
...
<script src="{% static 'ckeditor/ckeditor/plugins/prism/lib/prism/prism_patched.min.js' %}"></script>
<link rel="stylesheet" href="{% static 'prism/prism.css' %}">
...
将Prism、widget、lineutils插件添加到配置文件中。后面两个编辑器自带,不用单独下载,添上就可以了:
my_blog/settings.py
...
CKEDITOR_CONFIGS = {
'default': {
...
# 添加 Prism 相关插件
'extraPlugins': ','.join(['codesnippet', 'prism', 'widget', 'lineutils']),
}
}
页面展示HTML
{% autoescape off %}
{{content.body}}
{% endautoescape %}