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 问题
我遇到了类似的问题。在 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 文件复制到静态文件夹中,提交更改,然后将更改拉到我的服务器中,一切开始正常工作。
如果您还没有使用白噪声,则不需要白噪声来使其工作。
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 问题
我遇到了类似的问题。在 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 文件复制到静态文件夹中,提交更改,然后将更改拉到我的服务器中,一切开始正常工作。
如果您还没有使用白噪声,则不需要白噪声来使其工作。