[Django]-My settings.py file in Django is getting too long. How do I split it into two?

2👍

Although my solution is not as complex as the ones above, they fit my simple needs: I have some imports in my settings.py file:

try:
    from settings_local import *
except ImportError:
    pass

try:
    from settings_production import *
except ImportError:
    pass

And then I have a settings_local.py file in my local development folder (which I don’t upload to the server) and where I overwrite local settings. Then I have a settings_production.py server where I keep settings needed for the production environment.

You can use this technique to import other settings files as well.

👤chris

2👍

Just put it in any file you like and import it somewhere in your main settings file.

So you could set up new settings my_new_settings.py anywhere django can reach, and import it at the end of your real settings.py.

# settings.py
# ...
from my_new_settings import *

2👍

These pages might help: discussion on SO, discussion on djangoproject.com

2👍

I’m not a pythonista, so my take might just be the most un-pythonic way to do this. Having said that, this is how I split the settings for our Django app:

Instead of a single settings.py file, we have settings/__init__py. It contains imports for all the settings sections, which are placed in the settings directory.

# settings/__init__.py
from .foo import *
from .bar import *

# settings/foo.py
FOO="test"

# settings/bar.py
BAR="quz"

From the perspective of the application, this is still the same old settings module; from yours, it’s a clean structure of configuration data.

0👍

Create new_settings.py file to contain part of settings.py, and import that file wherever you need it.

Leave a comment