2 回答
TA贡献1827条经验 获得超4个赞
设置CKEditor和设施上传图片
pip install django-ckeditor
在文件 setting.py 中添加 ckeditor 和 ckeditor_uploader
INSTALLED_APPS = [ ... 'ckeditor', 'ckeditor_uploader', ... ]
在文件 setting.py 中添加下面的代码
CKEDITOR_CONFIGS = { 'portal_config': { # 'skin': 'moono', # 'skin': 'office2013', 'toolbar_Basic': [ ['Source', '-', 'Bold', 'Italic'] ], 'toolbar_YourCustomToolbarConfig': [ {'name': 'document', 'items': [ 'Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates' ]}, {'name': 'clipboard', 'items': [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']} , {'name': 'editing', 'items': ['Find', 'Replace', '-', 'SelectAll']}, {'name': 'forms', 'items': [ 'Form' , 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ]}, '/', {'name': 'basicstyles', 'items': [ '粗体', '斜体', '下划线', '罢工', '下标', '上标', '-', 'RemoveFormat' ]}, {'name': 'paragraph', 'items': [ ' NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock' , '-', 'BidiLtr', 'BidiRtl', 'Language' ]}, {'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']}, {'name': 'insert', 'items': [ 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, '/', {'name': 'styles', 'items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items ': ['TextColor', 'BGColor']}, {'name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名字放在这里 'Preview' , '最大化',锚点']}, {'name': 'insert', 'items': [ 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, ' /', {'name': 'styles', 'items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': [' TextColor', 'BGColor']}, {'name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About' ]}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名字放在这里 'Preview', 'Maximize' ,锚点']}, {'name': 'insert', 'items': [ 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, ' /', {'name': 'styles', 'items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': [' TextColor', 'BGColor']}, {'name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About' ]}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名字放在这里 'Preview', 'Maximize' ,insert', 'items': [ 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, '/', {'name': 'styles' , 'items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {' name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 把这个放到在新行上强制下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名称放在这里 'Preview', 'Maximize',insert', 'items': [ 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, '/', {'name': 'styles' , 'items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {' name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 把这个放到在新行上强制下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名称放在这里 'Preview', 'Maximize',HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, '/', {'name': 'styles', 'items': ['Styles', 'Format', 'Font' , 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {'name': 'tools', 'items': ['Maximize', ' ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items ': [ # 把你的 editor.ui.addButton 的名字放在这里 'Preview', 'Maximize',HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ]}, '/', {'name': 'styles', 'items': ['Styles', 'Format', 'Font' , 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {'name': 'tools', 'items': ['Maximize', ' ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items ': [ # 把你的 editor.ui.addButton 的名字放在这里 'Preview', 'Maximize',items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {'name' : 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 强制下一个新行上的工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名称放在这里 'Preview', 'Maximize',items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {'name' : 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About']}, '/', # 强制下一个新行上的工具栏 {'name': 'yourcustomtools', 'items': [ # 把你的 editor.ui.addButton 的名称放在这里 'Preview', 'Maximize',about', 'items': ['About']}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 输入你的编辑器的名字。 ui.addButton 此处为“预览”、“最大化”、about', 'items': ['About']}, '/', # 把这个强制放在新行的下一个工具栏 {'name': 'yourcustomtools', 'items': [ # 输入你的编辑器的名字。 ui.addButton 此处为“预览”、“最大化”、
]},
],
'toolbar': 'YourCustomToolbarConfig', # put selected toolbar config here
# 'toolbarGroups': [{ 'name': 'document', 'groups': [ 'mode', 'document', 'doctools' ] }],
# 'height': 291,
# 'width': '100%',
# 'filebrowserWindowHeight': 725,
# 'filebrowserWindowWidth': 940,
# 'toolbarCanCollapse': True,
# 'mathJaxLib': '//cdn.mathjax.org/mathjax/2.2-latest/MathJax.js?config=TeX-AMS_HTML',
'tabSpaces': 4,
'extraPlugins': ','.join([
'uploadimage', # the upload image feature
# your extra plugins here
'div',
'autolink',
'autoembed',
'embedsemantic',
'autogrow',
# 'devtools',
'widget',
'lineutils',
'clipboard',
'dialog',
'dialogui',
'elementspath'
]),
} }
在模型中
从 ckeditor_uploader.fields 导入 RichTextUploadingField
class Article(models.Model): body = RichTextUploadingField(config_name='portal_config')
添加回答
举报