在我的Django项目中,我希望将settings.py文件包含在初始提交中,以便其他开发人员可以克隆存储库并更改原始设置以使用本地设置。但是,之后我不想在每次提交时手动排除文件,并且忽略文件不会工作,因为它已被跟踪。
那么,如何在保持跟踪原始文件的同时自动排除settings.py?[/ p>
感谢任何帮助:)
答案 0 :(得分:9)
对此有一种替代的,可能更灵活的方法。不要排除settings.py
文件。
相反,做这样的事情:
try:
from localsettings import *
except ImportError:
pass
这样,如果您需要实际更改settings.py
文件,其他人可以接收更改。您可以提供合理的默认值,只要您可能要在本地覆盖的任何设置 localsettings
导入
您可以根据需要更改localsettings.py
文件(我倾向于使用它来打开DEBUG
,设置我的database settings,并确保我只使用本地记忆为cache backend}。
请确保从提交中排除localsettings.py
文件。
答案 1 :(得分:2)
通常使用Mercurual完成此操作的方法是提交一个名为settings.py.template
之类的文件,并让某人接受新克隆的第一步是将其复制到settings.py
文件,列在.hgignore
文件中。这样,如果有人在模板中添加了新设置,人们仍然可以获得它并将其合并到本地设置中。在开始/部署脚本中或使用克隆挂钩自动将模板复制到实际是很容易的,尽管大多数人都不会打扰。
答案 2 :(得分:0)
我知道这是一个旧线程,但其他人可能会发现一种不同的方法仍然有用。 (我遇到了这个问同样的问题)。
您可以将settings.py保留在存储库中并对其进行修改,以便从环境变量中获取特定于机器的值。建议使用here和here
例如,数据库连接通常因机器而异:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['DB_NAME'],
'USER': os.environ['DB_USER'],
'PASSWORD': os.environ['DB_PASSWORD'],
'HOST': os.environ['DB_HOST'],
'PORT': os.environ['DB_PORT'],
} }