我想在 django 中使用不同的设置文件——特别是 settings_prod——但是每当我尝试使用
--settings=settings_prod
进行同步数据库时,它就会抱怨:
python2.6 manage.py syncdb --settings=settings_prod
Error: Can't find the file 'settings.py' in the directory containing 'manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)
我也尝试过将环境变量
DJANGO_SETTINGS_MODULE=settings_prod
设置为无止境。
编辑:我还在我的 wsgi 文件中设置了环境变量,也没有结束:
import os
import sys
from django.core.handlers.wsgi import WSGIHandler
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings_prod'
application = WSGIHandler()
建议?
尝试创建一个
settings
模块。
settings
相同的目录中创建一个 manage.py
文件夹。base.py
和 prod.py
)。制作
__init__.py
并导入您想要用作默认设置的任何设置。例如,您的 __init__.py
文件可能如下所示:
from base import *
运行您的项目并覆盖设置:
$ python2.6 manage.py syncdb --settings=settings.prod
我确实知道,无论您对
manage.py
做什么,您都会收到该错误,因为 manage.py
会相对导入 settings
:
try:
import settings # Assumed to be in the same directory.
http://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---settings
注意这个选项是不必要的 在manage.py中,因为它使用 当前项目中的settings.py 默认情况下。
你应该尝试
django-admin.py syncdb --settings=mysettings
而不是
这对我有用:
DJANGO_SETTINGS_MODULE=config.settings.abc python manage.py migrate
这会对你有帮助:
使用原始的settings.py 文件创建另一个文件“setting_prod.py”。
在setting_prod.py 文件中写下您需要运行的设置。
然后在settings.py文件中导入setting_prod.py文件。
对于前。 设置.py:
VARIABLE = 1
import setting_prod
setting_prod.py
VARIABLE = 2
在settings.py文件中导入setting_prod.py文件后,VARIABLE将从“1”设置为新值“2”。
我们可以使用此方法来设置不同的设置文件,例如,我为单元测试使用不同的设置文件(settings_unit_test.py)。另外,我还有针对不同基础设施环境的其他设置文件 settings_dev.py、settings_test.py 和 settings_prod.py。
windows环境下(linux下也可以)
set DJANGO_SETTINGS_MODULE=settings_unit_test
set PYTHONPATH=<path_of_your_directory_where_this_file_'settings_unit_test.py'_is_kept>
在
manage.py
内,你会看到这一行:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
其中
projectname.settings
指的是 Django 应用程序中的位置 projectname/settings.py
。
如果您希望设置文件指向
projectname/settings/prod.py
,则将此行更改为:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings.prod')