这是我在django settings.py中关于数据库的设置
我现在使用的方法是使用参数TEST
,如果TEST == True,请在我的计算机中使用db。
否则:在AWS上使用RDS
我想知道如何根据ip或
请指导我谢谢!
TEST = True
if TEST==True:
DATABASES = { # localhost
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": " ",
"USER": " ",
# "PASSWORD": " ",
"HOST": "localhost",
"PORT": "5432",
}
}
else:
DATABASES = { #aws
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': " ",
'USER': " ",
'PASSWORD': " ",
'HOST': "xxx.ap-northeast-1.rds.amazonaws.com" ,
'PORT': "5432",
}
}
答案 0 :(得分:0)
您应该为prod和dev使用不同的设置文件。您可以拥有一个具有共享设置的基本设置文件,然后导入基本设置文件并更改dev / prod不同的变量(在本例中为DATABASES)
这样您就不必记住更改任何内容,并且您的设置将更清晰且可源控制。确保在wsgi.py中加载了正确的设置文件。
设置/ base.py
# shared things go in here
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
INSTALLED_APPS = (
'django.contrib.admin',
...
)
...
设置/ dev.py
from .base import *
DEBUG = True
TEMPLATE_DEBUG = True
DATABASES = { # localhost
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": " ",
"USER": " ",
# "PASSWORD": " ",
"HOST": "localhost",
"PORT": "5432",
}
}
设置/ prod.py
from .base import *
DEBUG = False
TEMPLATE_DEBUG = False
DATABASES = { #aws
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': " ",
'USER': " ",
'PASSWORD': " ",
'HOST': "xxx.ap-northeast-1.rds.amazonaws.com" ,
'PORT': "5432",
}
}
答案 1 :(得分:0)
我忘了提到的另一个可行的选择是使用环境变量。您可以在wsgi文件中设置环境变量,如下所示:
os.environ['VARNAME'] = 'value'
如果您正在使用虚拟环境,请将此激活脚本:
export VARNAME='value'
然后在您的settings.py文件中,你会有类似的东西:
env = os.environ['ENV']
if env == "dev":
DATABASES = { # localhost
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": " ",
"USER": " ",
# "PASSWORD": " ",
"HOST": "localhost",
"PORT": "5432",
}
}
elif env == "prod":
DATABASES = { #aws
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': " ",
'USER': " ",
'PASSWORD': " ",
'HOST': "xxx.ap-northeast-1.rds.amazonaws.com" ,
'PORT': "5432",
}
}
根据您的设置,有几种方法可以设置环境变量,但我通常会添加到virtualenv的激活文件中,或者将其添加到wsgi文件中