Могу ли я (безопасно) переопределить настройки Django в wsgi.py на стороне сервера?
Я хочу развернуть два веб-приложения Django (отдельные домены), которые имеют один и тот же исходный код/репозиторий и, следовательно, один и тот же файл настроек. (Хостинг на pythonanywhere, кстати). Единственное различие между ними заключается в том, что они должны обращаться к разным базам данных (которые я обычно определяю в settings.py или .env).
Как я понимаю, единственный файл, который уникален для каждого веб-приложения - это их индивидуальный файл ...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()
Большое спасибо за помощь!
Среда DJANGO_SETTINGS_MODULE
указывает, какой файл настроек использовать для конкретного веб-приложения. Просто создайте 2 модуля настроек (по одному для каждого веб-приложения) и укажите DJANGO_SETTINGS_MODULE
на соответствующий модуль настроек.
Я выбрал следующее решение, основанное на комментарии Abdul Aziz Barkat. Это требует только один общий файл настроек, однако, позволяет переопределить в нем настройки по умолчанию.
В settings.py
'SOME_VAR': os.getenv('WSGI_SOME_VAR') or config('SOME_VAR')
В ...wsgi.py:
os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings'
os.environ['WSGI_SOME_VAR'] = 'SOME_VALUE'