Django WhiteNoise配置与WhiteNoise v4.0不兼容

时间:2019-04-23 14:33:46

标签: python django

我正在尝试在Heroku上部署Django Webapp。每次尝试部署时,我都面临着同样的错误。

  

ImportError:          您的WhiteNoise配置与WhiteNoise v4.0不兼容          可以按照以下升级说明进行修复:          http://whitenoise.evans.io/en/stable/changelog.html#v4-0    !运行'$ python manage.py collectstatic --noinput'时出错。          有关详细信息,请参见上面的回溯。          您可能需要更新应用程序代码来解决此错误。          或者,您可以为此应用程序禁用collectstatic:             $ heroku config:set 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更新,并且还具有静态文件。

该项目像本地服务器上的超级按钮一样工作,但是我只是无法部署它。 预先感谢!

5 个答案:

答案 0 :(得分:1)

在wsgi.py中使用

from whitenoise import WhiteNoise

代替

from whitenoise.django import DjangoWhiteNoise

答案 1 :(得分:0)

{{ number_format(($subtotal,2) }}
 {{ number_format(($subtotalquant,2) }}

别名现已被删除。相反,您应该使用正确的导入路径:

whitenoise.django.GzipManifestStaticFilesStorage

来源the kernel documentation

答案 2 :(得分:0)

如果将DEBUG设置为TRUE,则可能会遇到此错误。

请确保您获得了用于制作的以下设置:DEBUG = FALSE

答案 3 :(得分:0)

我基本上按照本页上的说明操作到fixe it

Django的WSGI集成选项(涉及编辑wsgi.py)已被删除。相反,您应该将WhiteNoise添加到settings.py的中间件列表中,并从wsgi.py中删除对WhiteNoise的任何引用。

答案 4 :(得分:0)

显然从 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 middleware

此外,“whitenoise.django.GzipManifestStaticFilesStorage”别名已更改为 “whitenoise.storage.CompressedManifestStaticFilesStorage”再次出现在您的settings.py文件中,即 STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'