Usage¶
1. Define env file¶
To define env file, simply create JSON file.
2. Using env file¶
When you create an instance from json_environ.Environ, it will try to read ~/.env.json as default. You can pass custom path of your env file to path parameter:
from json_environ import Environ
env = Environ() # read ~/.env.json
# or
env = Environ(path='some-path/.env.json')
some_env_value = env("SOME_KEY", default=False) # get value of SOME_KEY from file. if it isn't exist, return False
another_value = env("NOT_EXIST") # raise KeyError if key is not found
3. Reaching nested fields¶
If you have nested structure in your JSON file, you can reach them by using : as default:
env("PARENT:CHILD", default=None)
If you want to custom separator, you can use key_separator:
env = Environ(key_separator=">")
env("PARENT>CHILD", default=None)
Example¶
Let’s assume we have JSON file named .my_env.json which looks like:
{
"SECRET_KEY": "kminvupn=7dbw70e!#njo8qas2bx$tmw$nv1pt$g30&+f4(8c)",
"DEBUG": true,
"SSL": false,
"ALLOWED_HOSTS": [
"*"
],
"DATABASE": {
"NAME": "dbname",
"USER": "dbuser",
"PASSWORD": "dbsecret"
}
}
To use JSON Environ in a project:
import os
from json_environ import Environ
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
env_path = os.path.join(BASE_DIR, '.my_env.json')
env = Environ(path=env_path)
SECRET_KEY = env('SECRET_KEY', default="PT09PT0KVXNhZ2UKPT09PT0KClRvI")
DEBUG = env("DEBUG")
ALLOWED_HOSTS = env('ALLOWED_HOSTS')
if env('SSL', default=False) is True:
SECURE_SSL_REDIRECT = False
DATABASES = {
'default': {
'NAME': env("DATABASE:NAME", default="test"),
'USER': env("DATABASE:USER", default="lms"),
'PASSWORD': env("DATABASE:PASSWORD", default="123456"),
}
}