我最近开始使用一个设置目录,如Django书中的两个Scoops所述。它包含以下文件
local.py
staging.py
production.py
test.py
__init__.py
为了能够在服务器上使用不同的设置文件,我调整了django.fcgi脚本来导入设置模块。它工作非常顺利。
但是,我如何在我使用runserver的本地机器上进行同样的操作?我已经设置了DJANGO_SETTING_MODULE,并且我已经将manage.py
文件调整为
#!/usr/bin/env python
from django.core.management import execute_manager
import imp
import sys
sys.path.insert(0, '/home/user/don.joey/projects/a_project/a_project_site/settings')
import settings
try:
imp.find_module('settings') # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.nYou'll have to run django-admin.py, passing it your settings module.n" % __file__)
sys.exit(1)
if __name__ == "__main__":
execute_manager(settings)
它运行良好。
如何使django-admin.py
找到这些设置我不想手动编辑django-admin.py,因为它是我的virtualenv的一部分,因此会定期更新。
更新
我设置了以下内容:export DJANGO_SETTINGS_MODULE=settings.local
。
您需要设置两件事
DJANGO_SETTINGS_MODULE
和PYTHONPATH
,以便可以找到设置模块
Django的两个Scoop建议建立一个名为blah
的项目,您将拥有以下目录结构:
- blah_project/
- blah/
- manage.py
- blah/
- ...
- settings/
- __init__.py
- local.py
- production.py
- ...
运行以下程序(假设bash
环境):
export DJANGO_SETTINGS_MODULE=blah.settings.local
export PYTHONPATH=/full/path/to/blah_project/blah
只要django-admin.py
在您的路径上(如果django
在您的venv
中安装并激活,则应该是这样),您就应该能够运行:
django-admin.py runserver