我试图找到最好的方法来拆分我的Django设置,并为dev和prod提供不同的设置文件。
我的wsgi文件:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
在我的uwsgi.ini文件中,我有以下内容:
env = DJANGO_SETTINGS_MODULE=project.settings.local
wsgi-file = project/wsgi.py
Run Code Online (Sandbox Code Playgroud)
但是uwsgi.ini文件中的env不会传递给wsgi。如果我在wsgi文件中打印os.environ,则未设置DJANGO_SETTINGS_MODULE。
有任何想法吗?
我喜欢在wsgi.py中执行以下操作:
import os
import socket
socket_name = socket.gethostname()
if "stage" in socket_name:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.staging')
elif "prod" in socket_name:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.production')
else:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.local')
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
您可以根据自己的喜好来检测是否处于暂存,生产还是本地状态,但是os.environ.setdefault命令似乎可以完成您希望执行的操作。