django 中的 CK-Editor 无法在生产环境中工作

CK-Editor in django not working in production

CK-editor 在开发中工作正常,但在生产中不工作。

在控制台选项卡中显示错误: Failed to load resource: the server responded with a status of 404 (Not Found) ckeditor.js

发生这种情况是因为您的静态文件处理不当或未针对部署进行处理。

确保您的 setting.py 看起来像这样:

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'YOUR STATIC FILE FOLDERS')]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

如果您 运行 您在 Nginx or apache2please make sure you configured the.conf` 文件上的应用程序正确地服务器静态文件。

此外,还有一个简单易行的解决方案,那就是whitenoise

如果您不想使用 Nginx 或类似服务器提供静态文件。

你可以试试whitenoise

要使用 whitenoise,请先安装它并像这样更新您的 settings.py 文件:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

并将其添加到会话中间件之前的中间件中

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware', # Serve static in production without nginx or apache
    'django.contrib.sessions.middleware.SessionMiddleware',
    ........
]

希望解决方案能解决您的 ckeditor 问题

这里是白噪声文档:http://whitenoise.evans.io/en/stable/

我遇到了类似的问题。在 localhost 中一切正常,但在我将代码部署到实时服务器后 django-ckeditor 无法正常工作。当我检查控制台时,django-ckeditor 被配置为检查 /static/ckeditor/ckeditor/ckeditor.js。但是在第一次配置ckeditor和运行 python manage.py collecstatic之后,ckeditor被配置为将静态文件复制到STATIC_ROOT which staticfiles给定的位置,下面是我相信几乎每个人都这样做的我的静态文件设置:

STATIC_URL = 'static/'
STATICFILES_DIRS = [
    BASE_DIR / 'static'
]
STATIC_ROOT = BASE_DIR / 'staticfiles'

看上面的设置,这里有冲突。 ckedtor 静态文件将被复制到 /staticfiles/ckeditor/ckeditor/ckeditor.js 但 Django 将调查 /static/ckeditor/ckeditor/ckeditor.js.

我做的简单 hack 是将所有 ckeditor 文件复制到静态文件夹中,提交更改,然后将更改拉到我的服务器中,一切开始正常工作。

如果您还没有使用白噪声,则不需要白噪声来使其工作。