【问题标题】:Does whitenoise really require collectstatic?白噪声真的需要collectstatic吗?
【发布时间】:2018-11-07 12:02:15
【问题描述】:

我正在探索使用 whitenoise 在打包在 Docker 容器中的 Django 应用程序中提供静态文件。在文档中它说:

作为部署应用程序的一部分,您需要运行 ./manage.py collectstatic 将所有静态文件放入 STATIC_ROOT。 (如果您在 Heroku 上运行,则会自动为您完成。)

真的需要吗?我没有运行 ./manage.py collectstatic 并且仍然提供静态文件。

如果不需要,是优化吗?我正在努力避免在我的部署过程中执行不必要的步骤。

【问题讨论】:

    标签: django whitenoise


    【解决方案1】:

    正如引用所述,Whitenoise 提供来自 STATIC_ROOT 的文件。 collectstatic 从 STATICFILES_DIRS 和任何特定于应用程序的静态目录中收集文件并将它们放入 STATIC_ROOT。

    但是有两种情况下它会在不运行 collectstatic 的情况下提供文件。第一个是您的文件是否已经在 STATIC_ROOT 中。它们不应该是,但是将 STATIC_ROOT 的值设置为包含源文件的目录是一个常见的错误。但是,在这种情况下,它不会找到例如需要收集的管理文件。

    另一种情况是如果您使用 DEBUG=True 运行。 Whitenoise 为它的USE_FINDERS setting 继承了这个值,这使它看起来与 collectstatic 本身在相同的位置提供文件。显然,您不希望在启用 DEBUG 的情况下在生产环境中运行,但您可以明确设置此设置。但正如该文档链接指出的那样,这样做会禁用 Whitenoise 的缓存和压缩功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2013-06-04
      • 2018-10-23
      • 1970-01-01
      • 2011-09-12
      • 2018-11-06
      • 1970-01-01
      相关资源
      最近更新 更多