【发布时间】:2021-10-05 11:10:07
【问题描述】:
我想部署两个共享相同源代码/存储库以及相同设置文件的 Django Web 应用(单个域)。 (顺便说一句,托管在 pythonanywhere 上)。两者之间的唯一区别是它们应该访问不同的数据库(我通常会在 settings.py 或 .env 中定义)。
在我看来,每个 web 应用程序唯一的唯一文件是它们各自的 ...wsgi.py 文件(服务器上的文件不是 Django 项目文件夹中的文件)。因此,我的想法是使用该文件来指定每个应用程序的数据库设置。
是否可以(安全地)覆盖 wsgi 文件中的设置?我该怎么做?
当前的 wsgi.py 文件如下所示:
# +++++++++++ DJANGO +++++++++++
# To use your own django app use code like this:
import os
import sys
#
## assuming your django settings file is at '/home/.../mysite/mysite/settings.py'
## and your manage.py is is at '/home/.../mysite/manage.py'
path = '/home/.../...'
if path not in sys.path:
sys.path.append(path)
#
os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings'
#
## then:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
非常感谢您的帮助!
【问题讨论】:
-
为什么不简单地在环境变量中设置这些值呢?请参阅:help.pythonanywhere.com/pages/… 另一方面,如果您想从 wsgi 文件中执行此操作,只需编写
os.environ['SOME_VAR'] = 'SOME_VALUE'类似于os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings'