在不同数据库上运行的相同Django项目

时间:2020-07-10 08:38:52

标签: django

我正在尝试在不同的数据库上运行两个相同的Django项目,一个用于使用特定端口号(例如80)进行生产,另一个用于使用另一个端口号(例如8000)进行测试。我还将Nginx和Gunicorn用作反向代理服务器和应用程序服务器,Nginx分别侦听端口80和8000并转发到端口8001和8002的gunicorn。

问题是:如何知道Django settings.py中请求的端口号,以便项目可以选择其他数据库?

1 个答案:

答案 0 :(得分:1)

在django中执行此操作的标准做法是创建一个local_settings.py文件

将其放在local_settings.py文件的顶部:

try:
    from settings import *
except ImportError:
    pass

现在在local_settings.py中,您必须覆盖以下变量:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'dbuser',
        'PASSWORD': 'dbpassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

两个项目的值都不同

然后在运行Django时,您需要设置以下环境变量:

export DJANGO_SETTINGS_MODULE="appname.local_settings"

将所有这些组合在一起的一种方法是创建一个run.sh文件,该文件首先设置此变量,然后运行gunicorn

总而言之,settings.py在两个项目之间是通用的,local_settings.py会覆盖不同项目之间不同的那些变量