【问题标题】:Django WhiteNoise configuration is incompatible with WhiteNoise v4.0Django WhiteNoise 配置与 WhiteNoise v4.0 不兼容
【发布时间】:2019-09-12 18:41:26
【问题描述】:

我正在尝试在 Heroku 上部署我的 Django webapp。每次我尝试部署时都会遇到同样的错误。

导入错误: 您的 WhiteNoise 配置与 WhiteNoise v4.0 不兼容 这可以通过遵循以下升级说明进行修复: http://whitenoise.evans.io/en/stable/changelog.html#v4-0 !运行“$ python manage.py collectstatic --noinput”时出错。 有关详细信息,请参阅上面的回溯。 您可能需要更新应用程序代码来解决此错误。 或者,您可以为此应用程序禁用 collectstatic: $ 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)

我不确定是什么导致了这个错误。应用了白噪声更新,并且静态文件也已就位。

该项目在本地服务器上就像一个魅力,但我无法部署它。 提前致谢!

【问题讨论】:

  • 你对wsgi.py所做的修改提交到git了吗?
  • 如果您的项目在本地运行但在 Heroku 上无法运行,则表明您有未提交的更改。 “git heroku push master”是您在提交之后运行的,它不会自动为您提交更改。
  • 我尝试在推送它之前提交,然后抛出相同的错误,然后是几个错误(收集静态时出错)

标签: python django


【解决方案1】:
whitenoise.django.GzipManifestStaticFilesStorage

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

whitenoise.storage.CompressedManifestStaticFilesStorage

来源Link

【讨论】:

  • 谢谢@skillmuggler
  • 我觉得你的回答令人困惑,因为他已经在使用STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
【解决方案2】:

在wsgi.py中使用

from whitenoise import WhiteNoise

而不是

from whitenoise.django import DjangoWhiteNoise

【讨论】:

  • settings.py 中更新此导入,并在settigns.py 中使用application = WhiteNoise(application) 而不是application = DjangoWhiteNoise(application)
【解决方案3】:

我基本上按照这个页面上的说明到fixe it

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

【讨论】:

    【解决方案4】:

    显然,从 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'

    【讨论】:

      【解决方案5】:

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

      确保您获得了用于生产的此设置:DEBUG = FALSE

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-14
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        • 2021-11-03
        • 2020-11-24
        • 2015-10-26
        • 2016-10-05
        相关资源
        最近更新 更多