dynaconf.contrib package

Submodules

dynaconf.contrib.flask_dynaconf module

class dynaconf.contrib.flask_dynaconf.DynaconfConfig(_settings, _app, *args, **kwargs)[source]

Bases: flask.config.Config

Settings load order in Dynaconf:

  • Load all defaults and Flask defaults
  • Load all passed variables when applying FlaskDynaconf
  • Update with data in settings files
  • Update with data in environmente vars ENV_FOR_DYNACONF_
get(key, default=None)[source]

Gets config from dynaconf variables if variables does not exists in dynaconf try getting from app.config to support runtime settings.

load_extensions(key='EXTENSIONS', app=None)[source]

Loads flask extensions dynamically.

class dynaconf.contrib.flask_dynaconf.FlaskDynaconf(app=None, instance_relative_config=False, dynaconf_instance=None, **kwargs)[source]

Bases: object

The arguments are. app = The created app dynaconf_args = Extra args to be passed to Dynaconf (validator for example)

All other values are stored as config vars specially:

ENVVAR_PREFIX_FOR_DYNACONF = env prefix for your envvars to be loaded
                    example:
                        if you set to `MYSITE` then
                        export MYSITE_SQL_PORT='@int 5445'

                    with that exported to env you access using:
                        app.config.SQL_PORT
                        app.config.get('SQL_PORT')
                        app.config.get('sql_port')
                        # get is case insensitive
                        app.config['SQL_PORT']

                    Dynaconf uses `@int, @bool, @float, @json` to cast
                    env vars

SETTINGS_FILE_FOR_DYNACONF = The name of the module or file to use as
                            default to load settings. If nothing is
                            passed it will be `settings.*` or value
                            found in `ENVVAR_FOR_DYNACONF`
                            Dynaconf supports
                            .py, .yml, .toml, ini, json
ATTENTION: Take a look at settings.yml and .secrets.yml to know the
required settings format.

Settings load order in Dynaconf:

  • Load all defaults and Flask defaults
  • Load all passed variables when applying FlaskDynaconf
  • Update with data in settings files
  • Update with data in environment vars ENVVAR_FOR_DYNACONF_

TOML files are very useful to have envd settings, lets say, production and development.

You can also achieve the same using multiple .py files naming as settings.py, production_settings.py and development_settings.py (see examples/validator)

Example:

app = Flask(__name__)
FlaskDynaconf(
    app,
    ENV_FOR_DYNACONF='MYSITE',
    SETTINGS_FILE_FOR_DYNACONF='settings.yml',
    EXTRA_VALUE='You can add aditional config vars here'
)

Take a look at examples/flask in Dynaconf repository

init_app(app, **kwargs)[source]

kwargs holds initial dynaconf configuration

make_config(app)[source]

dynaconf.contrib.django_dynaconf module

Dynaconf django extension

In the django_project/settings.py put as 1st app:

INSTALLED_APPS = [
    'dynaconf.contrib.django_dynaconf',
    ...
]

It must be included as the first application on the INSTALLED_APPS list.

Now in the root of your Django project (the same folder where manage.py is located)

Put your config files settings.{py|yaml|toml|ini|json} and or .secrets.{py|yaml|toml|ini|json}

On your projects root folder now you can start as:

DJANGO_DEBUG='@bool false'     DJANGO_ALLOWED_HOSTS='@json ["localhost"]'     python manage.py runserver
class dynaconf.contrib.django_dynaconf.Wrapper[source]

Bases: object

Module contents