How to manage local vs production settings in Django?

deployment, django, python

Solution

In `settings.py`:

try:
    from local_settings import *
except ImportError as e:
    pass

You can override what needed in `local_settings.py`; it should stay out of your version control then. But since you mention copying I'm guessing you use none ;)

Problem

What is the recommended way of handling settings for local development and the production server? Some of them (like constants, etc) can be changed/accessed in both, but some of them (like paths to static files) need to remain different, and hence should not be overwritten every time the new code is deployed. Currently, I am adding all constants to `settings.py`. But every time I change some constant locally, I have to copy it to the production server and edit the file for production specific changes... :( Edit: looks like there is no standard answer to this question, I've accepted the most popular method.

Original source

Related problems