我们是否需要将 White Noise 创建的文件在文件夹中添加到 gitignore 列表中?

问题描述

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

这真的安全吗?而且它不会产生问题吗?

解决方法

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

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

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

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...