Django multiple settings files

I remember while working at my previous job as python developer, the question on how to organize Django Settings for multiple users used to come up often. The thing about using a good IDE (yaay pycharm) is that it helps you circumnavigate such trivial issues. But it's good to do this anyway.

So in order to put that matter to rest and for documentation purposes, there's a simple way to organize the settings so that they may work just fine in all environments (prod, dev etc.). For the purpose of this example I am assuming I have two, Production and Development.

First things first, rename the to We will make a new settings module that will contain base. So our hierarchy will look as follows:

    MyApp                   #app with same name
        settings            #a new settings module
              #the old settings file

Now, simply add this to your for our settings module
import os

ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  
from base import * # required because that is what we will override

# now first import dev
if os.path.isfile(os.path.join(ROOT_DIR, 'settings/')):  
    from dev import *
# and then import prod because that has to override all the settings
if os.path.isfile(os.path.join(ROOT_DIR, 'settings/')):  
    from prod import *

So, now if you have a dev it's gonna import that and override base. If it's not there, it won't bother importing it. On Prod, it's just gonna override everything since it is imported at the end. So, there we go. No issues.

Now I should point out that you won't need to have any of the files except in the git tree. That way you don't have to have in version control. So now if you have multiple developers, they can all have a in their project tree.

Other people have also shared the way they do it, I haven't gone through all of them but I will if I encounter a problem with this method that I can't solve. Django Split Settings