我正在探索使用whitenoise在打包在 Docker 容器中的 Django 应用程序中提供静态文件。在文档中它说:
作为部署应用程序的一部分,您需要运行 ./manage.py collectstatic 以将所有静态文件放入 STATIC_ROOT。(如果您在 Heroku 上运行,那么这会自动为您完成。)
真的需要这样吗?我没有运行./manage.py collectstatic,仍然提供静态文件。
如果不需要,它是一种优化吗?我试图避免在部署过程中出现不必要的步骤。
正如那句话所说,Whitenoise 提供来自 STATIC_ROOT 的文件。collectstatic从 STATICFILES_DIRS 和任何特定于应用程序的静态目录中收集文件并将它们放入 STATIC_ROOT。
但是有两种情况它会在不运行 collectstatic 的情况下提供文件。第一个是您的文件是否已经在 STATIC_ROOT 中。它们不应该是,但是将 STATIC_ROOT 的值设置为包含源文件的目录是一个常见的错误。但是,在这种情况下,它不会找到例如需要收集的管理文件。
另一种情况是,如果您使用 DEBUG=True 运行。Whitenoise 为其USE_FINDERS设置继承了这个值,这使得它看起来与 collectstatic 本身在相同的地方来提供文件。显然,您不希望在 DEBUG 开启的情况下在生产中运行,但您可以明确设置此设置。但正如该文档链接所指出的那样,这样做将禁用 Whitenoise 的缓存和压缩功能。
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |