讲述了如何切换Django的设置
首先
我用Django开发Web应用,
在Heroku上,我认为有时候希望在生产环境或者暂存环境上更改功能。
这种情况下,我们需要根据环境来创建settings文件。
请注意,我正在使用Django 1.10.7版本。
开始进行项目制作
一般来说,会加载上述的 mysite/settings.py 文件。
试着创建另一个设置。
如果继续运行 python manage.py runserver,将会出现错误,所以让我们改变加载目标。
需要改变什么地方
具體來說
这两个文件中各有一处写着 os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “mysite.settings”) 的地方。
这将成为读取 settings 的位置。
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()
把它变成这样吧!
为了让开发在 Mac 上可以加载 mysite/settings/local.py,请将其改写为 os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “mysite.settings.local”)。
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.local")
try:
from django.core.management import execute_from_command_line
except ImportError:
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.local")
application = get_wsgi_application()
在生产环境中如何处理
我认为读到这里的人应该能理解,Django的设置文件可以通过环境变量DJANGO_SETTINGS_MODULE来更改加载的位置。
举个例子,对于Heroku,您可以根据环境来更改配置变量,从而更改要加载的设置文件。
就是这样。
heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production --app heroku_production
非常方便。
额外奖励
可以在运行服务器时指定 settings,这一点在公式文档中也有提到。
django-admin runserver --settings=mysite.settings.local
祝您拥有美好的Django之旅!