【问题标题】:Same Django projects running on different databases在不同数据库上运行的相同 Django 项目
【发布时间】:2020-10-30 23:12:15
【问题描述】:

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

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

【问题讨论】:

    标签: django


    【解决方案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覆盖了不同项目之间不同的那些变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 2011-01-14
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多