我有一个适用于Heroku的项目,我没有在我的本地机器上安装PostgreSQL。我想继续使用sqlite3
在我的本地计算机上运行该应用,但当我将其推送到Heroku时,它将转换为pg
我想要做的就是有一个IF条件,如果这是开发然后运行sqlite3 ..但如果它的生产运行然后跟随命令。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '',
'HOST': '',
'PORT': 5432,
'USER': '',
'PASSWORD': ''
}
}
Heroku正在使用dj_database_url
import dj_database_url
DATABASES['default'] = dj_database_url.config()
当我们定义用于生产的宝石和用于测试和开发的另一个宝石时,它基本上类似于Rails
。
答案 0 :(得分:3)
您可以在项目中创建local_settings.py文件,并从基本设置文件中导入该文件。这样,您可以为每个环境设置不同的设置。
此local_setting文件应包含在.gitignore
中答案 1 :(得分:0)
您使用VirtualEnvs吗?
您可以将settings.py
设置为:
DATABASES = {
'default': {
'ENGINE': get_var('DB_ENGINE'),
'NAME': get_var('DB_NAME'),
'HOST': get_var('DB_HOST'),
...
}
}
其中get_var
正在读取环境变量。这些envvars由virtualenv的postactivate
文件设置。
生产virtualenv postactivate使用postgresql值设置envvars DB_ENGINE,DB_NAME,DB_HOST
dev virtualenv postactivate文件设置与开发DB对应的env变种。