我只在我的生产环境中遇到这个奇怪的错误。它在本地和分期工作正常。
我正在使用Django==1.10.5
& 。我相信这个问题最近发生在我们从最新版本升级到最新版本时。django-blog-zinnia==0.18.1
zinnia-wysiwyg-ckeditor==1.3
Django==1.8
当我尝试创建博客条目时,我无法编辑内容,因为 ckeditor 实例未加载。错误是:
https://example.com/admin/zinnia/entry/81/change/config.js/change/ 404 (Not Found)
https://example.com/admin/zinnia/entry/81/change/lang/en.js/change/
GET https://example.com/admin/zinnia/entry/81/change/skins/moono-lisa/editor.css/change/
Uncaught TypeError: Cannot set property 'dir' of undefined
网址是/admin/zinnia/entry/81/change/
所以这看起来很像 ckeditor.js 正在尝试基于当前 URL 加载其他静态文件,并以某种方式将文件名注入当前 URL。
作为一种解决方法,我 ssh-ed 进入服务器并/static/ckeditor/ckeditor/ckeditor.8bd276b5ef4c.js
在最顶部操作并添加了这一行:
window.CKEDITOR_BASEPATH = '/static/ckeditor/ckeditor/';
这解决了这个问题。最大的问题是:为什么这只发生在我的一台机器上,为什么 Django/zinnia 不能CKEDITOR_BASEPATH
自行正确设置?
我在这里发布这个是因为我不确定这是否是 Django、zinnia 或 zinnia-ckeditor 中的问题,如果有人知道谁有罪,我很高兴在相关问题跟踪器上重新发布这个问题github。
编辑:
作为一种解决方法,在我的项目中,我创建了文件templates/admin/change_form.html
:
{% extends "admin/change_form.html" %}
{% block extrahead %}
<script>window.CKEDITOR_BASEPATH = '/static/ckeditor/ckeditor/';</script>
{{ block.super }}
{% endblock %}