Skip to main content

Configure Django using environment variables.

Project description

django-envconfig

Test Coverage Version

Django Python

Configure Django using environment variables (envvars). settings.py optional.

Getting started

Installation

python -m pip install django-envconfig

Usage

Edit the manage.py, asgi.py and wsgi.py files generated by Django's startproject command and modify the following line:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'envconfig.settings')

Minimum configuration

The following envvars are required (if settings.py is removed):

  • ALLOWED_HOSTS (unless you set DEBUG=on)

Environments may be stored in an .env file. This file can be stored in your root directory (next to manage.py) or anywhere on the path (e.g. virtualenv directory).

How it works

Any Django setting can be configured as an environment variable.

  • To set booleans: true|yes|on|1 and false|no|off|0 (case-insensitive)
  • To set None: none|null (case-insensitive)
  • Simple lists of strings can be stored comma-separated e.g. export ALLOWED_HOSTS=127.0.0.1,localhost
  • Dicts and complex lists should be stored as JSON

Settings are loaded with the following priority (highest first):

  1. Environment variables.
  2. Settings defined in your projects settings.py, if it exists. Note: any custom settings should be defined here with their default value.
  3. Settings that would be defined by a settings.py file generated by startproject. This should eliminate the need for the file in (2) for most projects. Caveats:
    • The default value for DEBUG has been changed to False.
    • A SECRET_KEY is generated but will not persist between sessions (e.g. if you restart your server/process manager). Check the Django documentation to see whether you need to set a persistent SECRET_KEY as an environment variable.

django-envconfig environment variables

Helper environment variables to use with django-envconfig:

Environment variable Description
DJANGO_PROJECT May be required if django-envconfig cannot find your project. Set to the name of the module originally generated by startproject
ADD_INSTALLED_APPS Add to INSTALLED_APPS
REMOVE_INSTALLED_APPS Remove from INSTALLED_APPS
ADD_MIDDLEWARE Add to MIDDLEWARE
REMOVE_MIDDLEWARE Remove from MIDDLEWARE

PostgreSQL environment variables

If you are using a PostgreSQL backend you do not need to set DATABASES. You can simply set PostgreSQL environment variables - the minimum is PGDATABASE. See the PostgreSQL docs for the full list of envvars. This way the same environment can be used when calling PostgreSQL command line utilities such as psql or pg_dump.

Why

  • To separate configuration from code. See The Twelve Factor App.
  • Use serverless services such as AWS Lambda and Heroku.
  • Avoid having to template settings files and keep the auto-generated settings.py up to date between Django versions.
  • Use .env files for easy switching between environments/deployments (e.g. dev, test and prod).

Dependencies

License

MIT.

Project details


Download files

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

Source Distribution

django-envconfig-0.3.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

django_envconfig-0.3.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file django-envconfig-0.3.0.tar.gz.

File metadata

  • Download URL: django-envconfig-0.3.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for django-envconfig-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2f81dbc866cc890bc7cb0775913339d51f7ec2c683a7640b2ab3d673cb556659
MD5 c5cd2ff5f58198d7263947e2725a9937
BLAKE2b-256 916c46016155ac0045ea4c33a9b6b7e3a5ca5e4f13d82fb00ab2692535df4354

See more details on using hashes here.

File details

Details for the file django_envconfig-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_envconfig-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e42320e181cc353f03f0cbedf48a3b6bcf0d226f9aa796c2262176c1cc438c6
MD5 fb1da158991a4924159b58b4fd28fb5e
BLAKE2b-256 8b74d55059b5fb7f578beaa644a0cd76309d8f98ceca7a5198f73b67d276d2d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page