开发者

Using a settings file other than settings.py in Django

I want to use a different settings file in django -- specifically settings_prod -- yet whenever I try to do a syncdb with --settings=settings_prod, it complains:

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.)

I've also tried setting the environment variable DJANGO_SETTINGS_MODULE=settings_prod to no end.

Edit: I have also set the environment variable in my wsgi file, also to no end:

import os
import sys

from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings_prod'
application = WSGIHandler()

Suggestions?


Try creating a settings module.

  1. Make a settings folder in the same directory as manage.py.
  2. Put your different settings files in that folder (e.g. base.py and prod.py).
  3. Make __init__.py and import whatever settings you want to use as your default. For example, your __init__.py file might look like this:

    from base import *
    
  4. Run your project and override the settings:

    $ python2.6 manage.py syncdb --settings=settings.prod
    


I do know that no matter what you do with manage.py, you're going to get that error because manage.py does a relative import of settings:

try:
    import settings # Assumed to be in the same directory.

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

Note that this option is unnecessary in manage.py, because it uses settings.py from the current project by default.

You should try django-admin.py syncdb --settings=mysettings instead


this works for me:

DJANGO_SETTINGS_MODULE=config.settings.abc python manage.py migrate


this will help you:

  • create a another file "setting_prod.py" with your original settings.py file.

  • write down your setting which you need to run, in setting_prod.py file.

  • Then import setting_prod.py file in your settings.py file.

for ex. settings.py:

VARIABLE = 1

import setting_prod

setting_prod.py

VARIABLE = 2

After importing setting_prod.py file in settings.py file, VARIABLE will set to new value to "2" from "1".


We can use this method to set different settings file, for example, I use different settings file for my unit test (settings_unit_test.py). Also I do have other settings file for different infrastructure environment settings_dev.py, settings_test.py and settings_prod.py.

In windows environment(same can done in linux as well)

set DJANGO_SETTINGS_MODULE=settings_unit_test
set PYTHONPATH=<path_of_your_directory_where_this_file_'settings_unit_test.py'_is_kept>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜