Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

django12factor: Bringing 12factor to Django

Project Description

What is it?

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.

Still not sure of the benefits? Check out “Twelve-Factor Config: Misunderstandings and Advice”.

Usage

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:

custom_settings = (
    "GOOGLE_ANALYTICS_KEY",
    "MAILCHIMP_API_KEY",
)
d12f = django12factor.factorise(custom_settings=custom_settings)

MAILCHIMP_API_KEY = d12f['MAILCHIMP_API_KEY']
GOOGLE_ANALYTICS_KEY = d12f['GOOGLE_ANALYTICS_KEY']

In the event of a custom_setting not being set in the environment, it will default to None.

Give me everything!

If you say so…

import django12factor
globals().update(django12factor.factorise())

Utilities

django12factor.getenv_bool is a utility function that takes the name of an environment variable, and returns True _unless_ it is set to either a “falsey” string (e.g. "no") or not set.

Settings

The following settings are currently supported:

DEBUG

Defaults to False for safety reasons, otherwise True unless os.environ("DEBUG") is a “falsy” string.

TEMPLATE_DEBUG

As for DEBUG, but defaults to the value of DEBUG.

CACHES

Uses django-cache-url to parse os.environ("CACHE_URL").

LOGGING

A static LOGGING dict that configures 12factor-style logging.

DATABASES

Uses dj-database-url - parses DATABASE_URL if it exists, otherwise falls back to in-memory sqlite.

Anything of the form FOO_DATABASE_URL will be parsed as DATABASES['foo'], allowing you to configure multiple databases via the environment.

ALLOWED_HOSTS

Treats os.environ("ALLOWED_HOSTS") as a comma-separated list.

SECRET_KEY

Uses os.environ("SECRET_KEY") - required if DEBUG==False.

Release History

Release History

This version
History Node

1.3

History Node

1.2

History Node

1.1

History Node

1.0

History Node

0.1

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django12factor-1.3.tar.gz (4.6 kB) Copy SHA256 Checksum SHA256 Source Apr 22, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting