通过uwsgi设置DJANGO_SETTINGS_MODULE

Chr*_*fer 2 django uwsgi

我试图找到最好的方法来拆分我的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。

有任何想法吗?

Rob*_*ley 5

我喜欢在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命令似乎可以完成您希望执行的操作。