Navigation
Lightweight set of middleware classes that inject visual indicators for each type of environment that a project is deployed to. Inspired by this article.
- Install the package:
pip install django-envi
. - Add the
'envi'
app to yourINSTALLED_APPS
. - Install the desired middleware class to
MIDDLEWARE_CLASSES
:envi.middleware.EnviFooterMiddleware
injects a sticky footer to all pages that displays the current environment.
- In each environment's settings file, add the
ENVI_ENVIRONMENT_KEY
setting, with the corresponding environment key string. See below.
There are a number of built-in environment definitions:
'local'
: A striped grey banner. Appears site-wide (default).'dev'
: A striped blue banner. Appears site-wide.'staging'
: A striped yellow banner. Appears site-wide.'production'
: A striped red banner. Only appears in/admin
.
The following settings are supported in your settings.py
:
ENVI_ENVIRONMENT_KEY
: A string representing the key to use to search theENVI_ENVIRONMENTS
settings dictionary. Defaults to'local'
.ENVI_ENVIRONMENTS
: A dictionary containing key-value pairs consisting of environment keys (as strings) mapped to dictionaries representing an environment definition. By default, there are 4 built-in environments available for selection.ENVI_ENVIRONMENT
: The current environment. This can either be defined explicitly (see Creating environments), otherwise it will be set to the corresponding dictionary by looking up theENVI_ENVIRONMENT_KEY
within theENVI_ENVIRONMENTS
dictionary.
Environments can be created using the following dictionary structure:
CUSTOM_ENV = {
# Required for all subclasses of EnviBaseMiddleware.
"SHOW_IN_ADMIN": True,
"SHOW_IN_SITE": True,
# Only required for subclasses of EnviBaseTemplateMiddleware.
"CONTEXT": {
# The contents of this dictionary will be passed to the template
# being rendered. You can add anything you want here.
"CONTENT": "ENVIRONMENT: STAGING",
"COLOR_A": "#ffba1e",
"COLOR_B": "#dba11a",
},
}
Then, this environment definition can be either:
Added to the
ENVI_ENVIRONMENTS
dictionary, and activated by setting theENVI_ENVIRONMENT_KEY
to the respective key.ENVI_ENVIRONMENTS = { "custom_key_1": CUSTOM_ENV, "custom_key_2": OTHER_CUSTOM_ENV, } ENVI_ENVIRONMENT_KEY = "custom_key_1"
Used to set the
ENVI_ENVIRONMENT
value directly.ENVI_ENVIRONMENT = CUSTOM_ENV
The implementation of django-envi
makes it easy to customize.
TODO: How to.
TODO: How to.
Version | Description |
---|---|
0.2.1 | Bugfix to prevent adding the banner to AJAX requests. Thanks to @marksweb for the PR. Also adds backwards compatability for Django versions < 1.10. |
0.2 | Repackaged without unnecessary docs/images directory. All documentation can be found in README.rst. |
0.1.2 | Fixes reference to nonexistent template. Manifest issue. |
0.1.1 | Renamed to django-envi. |
0.1 | Initial version. |
Shared under the MIT License.