GCT1015
设置CKEditor和设施上传图片pip install django-ckeditor在文件 setting.py 中添加 ckeditor 和 ckeditor_uploaderINSTALLED_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 导入 RichTextUploadingFieldclass Article(models.Model): body = RichTextUploadingField(config_name='portal_config')