Skip to main content

Easy to manage Config variables separate from App code. Useful while developing and deploying( CI/CD) django web-apps

Project description

dynamic-config

Easy to manage Config variables separate from App code. Useful while developing and deploying( CI/CD) django web-apps

Usage

  • You need to subclass the Config class.
  • Any configuration would be loaded from python config file (default: env.py) from the same folder where library is inherited. This file should not be committed to version history.
  • You also don't need to include a sample file. Since the Config object would be able to generate env.py itself.
  • It also loads Configuration variables from environment variables. The preference is env variables > env.py
  • The config file should define all the variables needed for a project.
  • It can also define a prefix to limit environment variables searched.
# project/conf.py

from dynamic_conf import Config

class CONFIG(Config):
    """singleton to be used for configuring from os.environ and env.py"""

    # default settings

    ENV = "prod" # optional field with a default value

    DB_NAME = "db"
    DB_HOST = "127.0.0.1"
    DB_USER = "postgres"
    DB_PASS = None # even None could be given as default value

    SECRET_KEY:str # required field. Note: it will not work in Python 2 because
  • to create project/env.py just run
# you could pass environment variables or set already with export
env DB_PASS='123' dynamic-conf

# or you could pass as list of key-value pair
dynamic-conf DB_USER='user-1' DB_PASS='123'

# to filter environment variables with a prefix
env VARS_PREFIX="PROD_" dynamic-conf PROD_DB_USER="user-2"
  • To use the config simply import and use particular attribute
# project/settings.py
from conf import CONFIG
DATABASES = {
    "default": {
        "ENGINE": "django.contrib.gis.db.backends.postgis",
        "HOST": CONFIG.DB_HOST,
        "NAME": CONFIG.DB_NAME,
        "USER": CONFIG.DB_USER,
        "PASSWORD": CONFIG.DB_PASSWORD,
        "PORT": "5432",
    }
}

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

dynamic-conf-0.1.0.tar.gz (4.8 kB view hashes)

Uploaded Source

Built Distribution

dynamic_conf-0.1.0-py2.py3-none-any.whl (5.2 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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