Skip to main content
 首页 » 编程设计

python之无法让 CKEditor 使用 zinnia-wysiwyg-ckeditor 在 Django 中工作

2025年04月02日28rubylouvre

首先请原谅我的英语真的很糟糕,但我会尽力解释。

我正在使用 django-blog-zinnia 在博客中工作,到目前为止一切顺利。现在我尝试将 CKEditor 与

集成

Django zinnia-wysiwyg-ckeditor

我按照其每个文档中的步骤进行操作,但无法正常工作。

我在控制台中搜索并检查了错误,没有任何错误,可能会忽略一些东西,因为这也是我第一次使用 Django。

所以,我做的是这个

  1. 我安装了 zinnia-wysiwyg-ckeditor 和 django-ckeditor
  2. 我在我的 settings.py 中添加了应用程序并配置了 django-ckeditor

我的 settings.py 看起来像这样。 ...

STATIC_URL = '/static/' 
MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(DATA_DIR, 'media') 
STATIC_ROOT = "/static_prod/" 
 
... 
 
INSTALLED_APPS = ( 
... 
'ckeditor', 
'ckeditor_uploader', 
'zinnia', 
'zinnia_ckeditor' 
) 
 
... 
 
# ZINNIA SETTINGS 
ZINNIA_ENTRY_BASE_MODEL = 'myapp.models.Video' 
ZINNIA_PAGINATION = 5 
 
# CKEDITOR SETTINGS 
CKEDITOR_UPLOAD_PATH = "uploads/" 
CKEDITOR_JQUERY_URL =  '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js' 
CKEDITOR_CONFIGS = { 
'default': { 
    'toolbar': 'Full', 
}, 
'zinnia-content': { 
    'toolbar_Zinnia': [ 
        ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord'], 
        ['Undo', 'Redo'], 
        ['Scayt'], 
        ['Link', 'Unlink', 'Anchor'], 
        ['Image', 'Table', 'HorizontalRule', 'SpecialChar'], 
        ['Source'], 
        ['Maximize'], 
        '/', 
        ['Bold', 'Italic', 'Underline', 'Strike', 
         'Subscript', 'Superscript', '-', 'RemoveFormat'], 
        ['NumberedList', 'BulletedList', '-', 
         'Outdent', 'Indent', '-', 'Blockquote'], 
        ['Styles', 'Format'], 
    ], 
    'toolbar': 'Zinnia', 
}, 
} 

在我的 urls.py 中添加了这个。

url(r'^ckeditor/', include('ckeditor_uploader.urls')), 
  1. 我运行了 collectstatic 管理命令:python manage.py collectstatic

和 zinnia 管理员我的内容领域与 here 相同.

请您参考如下方法:

由于您的管理模型有预期的变化,您是否运行了 python manage.py makemigrations 和 python manage.py migrate?

编辑:

再次完成安装过程后,我建议不要乱用工具栏配置的 'zinnia-content' 部分。我发现,即使我从示例配置中复制/粘贴它,它也会在我的内容输入字段顶部产生一个非常细的栏——但没有工具栏(您的管理员似乎正在使用一些自定义的——而且非常好看 -- CSS,所以也许这可以解释为什么细灰色条甚至没有在您的示例中被拾取)。

我正在使用它来获取完整的工具栏(这是我的 Add Entry 页面):

CKEDITOR_CONFIGS = { 
    'default': { 
        'toolbar': None, 
    }, 
} 

我的设置中也有这个,它使“浏览服务器”窗口在我单击图像的缩略图时显示漂亮的图像预览——尽管缩略图本身呈现为损坏。但是,它并没有破坏项目,我认为这甚至不会导致缩略图问题(我相信它实际上负责在您浏览服务器上的图像时将预览图像渲染为相同大小):

CKEDITOR_IMAGE_BACKEND = "pillow" 

根据您的项目,特定于 zinnia 的工具栏可能是必需的,也可能不是必需的(在我的例子中,唯一使用 ckeditor 的地方是在输入字段中,无论如何 - 所以我没有超过一个配置。不过,如果我将其传递给客户端,我肯定会放弃完整的工具栏),但是如果您需要工具栏的多个实例,则可以通过页面模板本身的 native js 命令调用 ckeditor(并定义那里不同的工具栏设置)可能比在 settings.py 文件中定义不同的配置更好。

虽然!如果您在提出这个问题后幸运地在您的 settings.py 文件中运行了 Zinnia 特定的配置,我很想知道您是如何做到的!

而且,如果您仍然无法呈现工具栏,我在 django-ckeditor demo project 上找到了 settings.py 和 urls.py 文件。非常有用的引用!

**这可能是一个特定于项目的问题,但我在 stackoverflow 上多次看到它被提及:无论出于何种原因,完整的工具栏配置没有默认加载 SCAYT 拼写检查器(尽管插件是与 django-ckeditor 安装一起自动安装),但是将以下两行添加到 ckeditor 的 config.js 文件中就可以了(第二个,正如您可能从名称中收集到的那样,是为了确保拼写检查始终自动启用):

CKEDITOR.editorConfig = function( config ) { 
    // Define changes to default configuration here. For example: 
    // config.language = 'fr'; 
    // config.uiColor = '#AADC6E'; 
    config.extraPlugins = 'scayt'; 
    config.scayt_autoStartup = true; 
};