django - django-environ 和 python-decouple 之间的区别?
问题描述
在这里我习惯django-environ
设置环境变量,但它给了我SECRET_KEY
错误。如何正确配置环境变量?
我也使用了python-decouple
for this 而不是django-environ
which 可以正常工作但不能与django-environ
.
django-environ
和python-decouple
which will be best for this和有什么不一样?
设置
import environ
env = environ.Env()
SECRET_KEY = env('SECRET_KEY')
DEBUG = env.bool("DEBUG", False)
.env 文件
DEBUG = True
SECRET_KEY = #qoh86ptbe51lg0o#!v1#h(t+g&!4_v7f!ovsl^58bo)g4hqkq #this is the django gives
使用时遇到此异常django-environ
django.core.exceptions.ImproperlyConfigured:设置 SECRET_KEY 环境变量
解决方案
django-environ
工作正常,但您需要加载.env
文件 - 只是实例化 anEnv
不会这样做:
import environ
env = environ.Env()
env.read_env()
SECRET_KEY = env('SECRET_KEY')
DEBUG = env.bool("DEBUG", False)
此外,我发现基于 DEBUG 值(仅在开发时必须为真)具有“合理的默认值”是一个有用的习惯用法:
DEBUG = env.bool("DEBUG", False)
SECRET_KEY = env('SECRET_KEY', default=('insecure' if DEBUG else Env.NOTSET))
设置Env.NOTSET
为默认值将使 django-environ 抱怨未设置的值。