我正在尝试在Heroku上部署我的Django webapp。每次尝试部署时,我都会遇到同样的错误。
导入错误: 您的白噪声配置与白噪声 v4.0 不兼容 可以按照以下升级说明解决此问题: http://whitenoise.evans.io/en/stable/changelog.html#v4-0 ! 运行"$ python manage.py collectstatic --noinput"时出错。 有关详细信息,请参阅上面的回溯。 您可能需要更新应用程序代码才能解决此错误。 或者,您可以为此应用程序禁用收集静态: $ heroku 配置:设置 DISABLE_COLLECTSTATIC=1 https://devcenter.heroku.com/articles/django-assets ! 推送被拒绝,编译 Python 应用失败。 ! 推送失败
我访问了链接以按照文档建议进行更改。它要求我从 wsgi.py 文件中删除任何提及,我必须将其添加到 settings.py 的中间件中并更改静态存储。
#settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
.
.
.
.
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
我正在遵循本教程 (https://simpleisbetterthancomplex.com/tutorial/2016/08/09/how-to-deploy-django-applications-on-heroku.html)
我不确定是什么导致了此错误。应用白噪声更新,静态文件也已就位。
该项目在本地服务器上就像一个魅力,但我只是无法部署它。 提前感谢!
whitenoise.django.GzipManifestStaticFilesStorage
别名现已删除。相反,您应该使用正确的导入路径:
whitenoise.storage.CompressedManifestStaticFilesStorage
源链接
在 wsgi.py 使用
from whitenoise import WhiteNoise
而不是
from whitenoise.django import DjangoWhiteNoise
我基本上按照此页面上的说明进行了修复。
Django 的 WSGI 集成选项(涉及编辑 wsgi.py)已被删除。相反,您应该在 settings.py 将WhiteNoise添加到中间件列表中,并从 wsgi.py 中删除对WhiteNoise的任何引用。
显然从 WhiteNoise 的 4.0 版开始,一些设置选项已更改。WSGI与django的集成已被删除,其中包括编辑 wsgi.py 文件;因此,您应该删除对 wsgi.py 文件的任何引用,并将WhiteNoise添加到 settings.py 文件中的中间件列表中。http://whitenoise.evans.io/en/stable/changelog.html#v4-0
WhiteNoise 中间件应该直接放在 Django SecurityMiddleware 下面,高于所有其他中间件 http://whitenoise.evans.io/en/stable/django.html#:~:text=Enable%20WhiteNoise,middleware。
白噪声中间件
而且,"whitenoise.django.GzipManifestStaticFilesStorage"别名已更改为 "whitenoise.storage.CompressedManifestStaticFilesStorage"再次在您的 settings.py 文件中,即 STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
如果您将DEBUG 设置为 TRUE,则可能会遇到此错误。
请确保获得生产设置:DEBUG = FALSE