使用Django 1.7及其新的迁移我遇到了一个奇怪的问题。
我将我的设置文件拆分为3个文件,我一直在1.7版本之前完成,例如......
/settings
__init__.py
base.py
development.py
production.py
__初始化__。PY
from .base import *
if sys.argv[1] == 'runserver':
from .development import *
else:
from .production import *
development.py
和production.py
都有自己的环境数据库设置。但是,运行迁移的新迁移系统无法检测到任何内容,除非我将数据库设置放在base.py
文件中。
我应该将此行修改为以下内容:
if sys.argv[1] == 'runserver' or sys.argv[1] == 'migrate':
还是有更好的方法?
答案 0 :(得分:3)
您应该避免在设置文件中添加逻辑,在使用runserver进行测试时,请考虑使用che - settings 选项,如下所示:
./manage.py --settings=project.settings.development runserver
您也可以使用环境变量DJANGO_SETTINGS_MODULE来切换Django使用的设置模块。
在您的开发环境中,您可以设置:
export DJANGO_SETTINGS_MODULE=project.settings.development
在制作中,你可以设置DJANGO_SETTINGS_MODULE = project.settings.production。
详细信息取决于您使用的部署类型和服务器。
就我的开发设置而言,我使用virtualenv wrapper,并使用以下内容设置postactivate挂钩:
#!/bin/bash
# This hook is run after this virtualenv is activated.
export DJANGO_SETTINGS_MODULE=project.settings.local
cd /home/user/develop/git/project
通过这种方式我可以输入
workon project
我正确设置了环境变量,并在正确的文件夹中发送了我的shell。
您可以拥有包含所有常用设置的base.py设置文件,然后在development.py(和production.py)中,您可以执行以下操作:
from .base import *
DATABASES = ... customize DB settings used for development/production ...