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

时间:2016-06-02 18:09:47

标签: python django ckeditor zinnia

首先,借口我的英语非常糟糕,但我会尽力解释。

我在博客中工作django-blog-zinnia,到目前为止一直很好。现在我尝试将CKEditor

集成

Django zinnia-wysiwyg-ckeditor

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

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

所以,我做的就是这个

  1. 我安装了zinnia-wysiwyg-ckeditordjango-ckeditor
  2. 我在settings.py添加了应用并配置了django-ckeditor
  3. 我的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
    2. zinnia管理员我的内容字段与here保持一致。

2 个答案:

答案 0 :(得分:1)

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

编辑:

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

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

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

我的设置中也有这个,这使得“浏览服务器”窗口在我点击图像的缩略图时显示出漂亮的图像预览 - 尽管缩略图本身呈现为已损坏。但是,它并没有打破这个项目,我认为这甚至不会导致缩略图问题(我相信它实际上负责将预览的图像以相同的大小重新排列,当您在服务器上导航图像时): / p>

CKEDITOR_IMAGE_BACKEND = "pillow"

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

虽然!如果你有幸在你的settings.py文件中使用Zinnia特定的配置,那么我会很高兴知道你是怎么做到的!

而且,如果您仍然无法使用工具栏进行渲染,我发现django-ckeditor demo project上的settings.pyurls.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;
};

答案 1 :(得分:0)

这就是我为使Zinnia-CKEditor工作所做的工作。

首先,删除CKEditor default配置。它被第二个工具栏声明'toolbar': 'Zinnia',覆盖。

CKEDITOR_IMAGE_BACKEND = "pillow"对于编辑器本身的图像渲染非常重要。

应该在CKEditor config.js中显示here的自定义配置可以用Python表示法添加到底部。这回答了关于直接配置百日草的sparkholiday's问题。

CKEDITOR_CONFIGS = {

    'zinnia-content': {
        'toolbar_Zinnia': [
            ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord'],
            ...
        ],
    'uiColor': '#9AB8F3',
    'extraPlugins': 'scayt'
    },
}

以下是我的百日草工具栏的结果:

Zinnia Custom Toolbar