【问题标题】:Do we need to add files (in the folder) that White Noise creates to the gitignore list?我们是否需要将 White Noise 创建的文件(在文件夹中)添加到 gitignore 列表中?
【发布时间】:2021-08-01 18:52:31
【问题描述】:

我有一个 django 项目并使用 whitenoise 来提供静态文件。 当我们运行py manage.py collectstatic whitenoise 时,会在 settings.py 文件的 STATIC_ROOT 对象的选定文件夹中创建大量文件。 它占用了大量的音量。 是否必须将我在 settings.py(STATIC_ROOT) 中指定的文件夹名称添加到 gitignore 列表中?

这是真实且安全的吗?而且这不会造成问题?

【问题讨论】:

  • 嗨。欢迎来到 StackOverflow。是的。您不应该将 STATIC_ROOT 目录推送到 github。相反,您应该做的是在部署期间在您的服务器上运行 python manage.py collectstatic

标签: django django-staticfiles whitenoise django-static django-packages


【解决方案1】:

./manage.py collectstatic 不是来自 Whitenoise 包,而是来自 Django 本身。

至于在你的 git 仓库中保留这个目录,通常的答案是:你不应该保留它。但是对于某些项目,这样做可能很有用。我会留给您评估哪个选项更适合您。如果您不确定,请将其远离您的 git 存储库。

为了给你完整的上下文,让我快速解释一下collectstatic 的作用。

Django 有一个内置的静态文件系统。由于 Django 项目可以包含多个应用程序(您在INSTALLED_APPS 中列出的所有内容)并且每个应用程序都可能需要一些静态文件才能正常工作,因此 Django 允许每个应用程序将其静态文件保存在其目录中。当您想要托管应用程序时,这种方法本身并不完美,因为在应用程序中保存静态文件的所有位置都必须在您的 Web 服务器配置中明确列出。

这就是collectstatic 命令存在的原因。执行后,Django 会将所有应用程序中的所有静态文件复制到一个位置,您可以从该位置立即提供它们。您还可以使用 STATICFILES_DIRS 扩展此文件列表,以包含已安装应用程序之外的某些位置(例如从您的项目根目录)。

这种方法当然需要在某处部署或更新已部署的项目时运行collectstatic 命令。有时您无法将此类命令添加到部署过程中,因此您必须已经收集了静态文件。其中一种方法是将它们保存在您的 git 存储库中,但应避免这种情况,而应首选其他解决方案(例如将所有静态文件保存在单独的位置,例如 S3 存储桶)。

【讨论】:

  • 我知道 collectstatic 在做什么(它来自 django)。但是当使用白噪声 STATICFILES_STORAGE 时,这是在做一些额外的事情。我知道 Django 静态文件系统是做什么的。所以不管我加不加,都没有问题吗?所以我添加是因为它增加了水箱的体积。这很糟糕。
  • 您应该避免将任何完全从您的存储库中的其他文件生成/计算的文件添加到您的存储库。这包括收集的静态文件。 Whitenoise 存储正在添加清单文件和压缩,这可以根据项目的其余部分完全重现,因此不会改变这种方法。
猜你喜欢
  • 1970-01-01
  • 2014-04-30
  • 2022-01-12
  • 2021-05-14
  • 2013-09-03
  • 1970-01-01
  • 2014-07-27
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多