========
Overview
========
Override arbitrary Django settings via environment variables.
* Free software: BSD license
Installation
============
::
pip install django-env-overrides
Documentation
=============
django-env-overrides lets you quickly adjust an existing Django app to load arbitrary settings from environment variables.
Setup
-----
Add these lines to the end of your ``setup.py`` file:
::
import django_env_overrides
django_env_overrides.apply_to(globals())
Any environment variable prefixed with ``DJANGO__`` will now be imported to your settings.
Example
-------
settings.py:
::
DEBUG = True
MEDIA_URL = '/media/'
DATABASES = {
'default': {
'ENGINE': 'sqlite3',
}
}
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
]
}
}
]
import django_env_overrides
django_env_overrides.apply_to(globals())
Environment:
::
DJANGO__SECRET_KEY=secret
DJANGO__MEDIA_URL=/new_url/
DJANGO__bool__DEBUG=False
POSTGRES=postgres://uf07k1:wegauwhg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722
DJANGO__db__DATABASES__default=$POSTGRES
DJANGO__TEMPLATES__0__OPTIONS__context_processors__1='my.context.processor'
Result:
::
DEBUG = False
MEDIA_URL = '/new_url/'
SECRET_KEY = 'secret'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'd8r82722',
'HOST': 'ec2-107-21-253-135.compute-1.amazonaws.com',
'USER': 'uf07k1',
'PASSWORD': 'wegauwhg',
'PORT': 5431,
}
}
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'my.context.processor',
]
}
}
]
Format for environment variables
--------------------------------
The general format for environment variable names is:
<prefix>__<typecast>__<path>__<to>__<target>__<setting>
``<prefix>`` defaults to ``DJANGO``. If you want to use another prefix, use ``django_env_overrides.apply_to(globals(), prefix="MYPREFIX")``.
``<typecast>`` (optional) is any `type known to the django-environ package <https://github.com/joke2k/django-environ#supported-types>`_.
Currently the supported types are str, bool, int, float, json, list, tuple, dict, url, path, db_url, cache_url, search_url, and email_url.
See the django-environ package for usage.
``<typecast>`` is optional and defaults to ``str``.
``<path>__<to>__<target>__<setting>`` specifies the setting or subsetting the value should be assigned to. Path elements
are treated as array indexes if they are integers, and otherwise as dictionary keys.
Development
===========
See CONTRIBUTING.rst
Changelog
=========
0.1.0 (2016-07-21)
-----------------------------------------
* First release on PyPI.