使用Django中settings.py以外的设置文件

Bri*_*n D 14 django

我想在django中使用不同的设置文件 - 特别是settings_prod - 但每当我尝试使用syncdb时--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.)
Run Code Online (Sandbox Code Playgroud)

我也尝试过将环境变量设置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()
Run Code Online (Sandbox Code Playgroud)

建议?

Ell*_*ron 16

尝试创建一个settings模块.

  1. settings在与...相同的目录中创建一个文件夹manage.py.
  2. 将您的不同设置文件放在该文件夹中(例如base.pyprod.py).
  3. 制作__init__.py并导入您要用作默认设置的任何设置.例如,您的__init__.py文件可能如下所示:

    from base import *
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行项目并覆盖设置:

    $ python2.6 manage.py syncdb --settings=settings.prod
    
    Run Code Online (Sandbox Code Playgroud)


Yuj*_*ita 10

我知道无论你做什么manage.py,你都会得到那个错误,因为manage.py相对导入settings:

try:
    import settings # Assumed to be in the same directory.
Run Code Online (Sandbox Code Playgroud)

http://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---settings

请注意,manage.py中不需要此选项,因为它默认使用当前项目中的settings.py.

你应该尝试django-admin.py syncdb --settings=mysettings,而不是

  • 无论您的WSGI配置文件说什么,如果您正在运行django-admin.py,您的设置文件必须位于pythonpath _now_上,而不是在Apache调用您的WSGI处理程序时.例如,您可以编辑您的manage.py文件并执行相应的`sys.path`修改,并将硬编码的`import settings`更改为`import mysettings as settings` (3认同)