Django is an awesome Python web framework.
"The Twelve-Factor App" is an awesome methodology for building SaaS apps.
django-12factor
makes Django more 12factor-y. Right now, this
focuses on the Config - "Store config
in the environment"; Heroku users with
addons will be particularly familiar with this.
Add the following to the bottom of your settings.py
:
import django12factor d12f = django12factor.factorise()
factorise()
returns a dict
of settings, so you can now use and
assign them as you wish, e.g.
DEBUG = d12f['DEBUG'] LOGGING = d12f['LOGGING']
If you don't like that repetition, you can (ab)use globals()
like
so:
import django12factor d12f = django12factor.factorise() def f(setting): globals()[setting] = d12f[setting] f('DEBUG') f('LOGGING')
You can also add non-Django settings this way, e.g. keys to APIs:
d12f = django12factor.factorise(['MAILCHIMP_API_KEY', 'GOOGLE_ANALYTICS_KEY']) MAILCHIMP_API_KEY = d12f['MAILCHIMP_API_KEY'] GOOGLE_ANALYTICS_KEY = d12f['GOOGLE_ANALYTICS_KEY']
If you say so...
import django12factor globals().update(django12factor.factorise())
The following settings are currently supported:
Uses
`django-cache-url
<https://github.com/ghickman/django-cache-url>`__
Uses
`dj-database-url
<https://github.com/kennethreitz/dj-database-url>`__ -
parses DATABASE_URL
if it exists, otherwise falls back to in-memory sqlite.