我正在尝试找到分割我的django设置的最佳方法,并为dev和prod提供不同的设置文件。
我的wsgi文件:
$subject2 = '1904-1905-france-germany-spain';
$new = explode('-', $subject2);
if(count($new) == 2){
echo $name = $new[0] . '/' . substr($new[1], 2);
} elseif (count($new) > 2) {
$name = $new[0] . '/' . substr($new[1], 2);
for($i = 2; $i<count($new); $i++ ){
$name.= ' ' . ucfirst($new[$i]) . ' ';
}
$name = trim($name, ' ');
echo $name;
}
在我的uwsgi.ini文件中我有这个:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
但uwsgi.ini文件中的env未传递给wsgi。如果我在wsgi文件中打印os.environ,则不会设置DJANGO_SETTINGS_MODULE。
有什么想法吗?
答案 0 :(得分:3)
我喜欢在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()
您检测是否进行升级,刺激或本地化的方法可以是您想要的任何方式,但是os.environ.setdefault命令似乎可以实现您的目标。 ;希望能做到。
答案 1 :(得分:1)
我的解决方案是在bin / activate文件中设置DJANGO_SETTINGS_MODULE。我在导出PATH之后添加了它,如:
export PATH
export DJANGO_SETTINGS_MODULE='project.settings.local'
您应该在项目环境文件夹中找到bin文件夹。