【问题标题】:Difference between django-environ and python-decouple?django-environ 和 python-decouple 的区别?
【发布时间】:2020-05-30 00:49:30
【问题描述】:

这里我使用django-environ设置了环境变量,但它给了我SECRET_KEY错误。如何正确配置环境变量?

我还为此使用了python-decouple,而不是django-environ,它可以正常工作,但不适用于django-environ

django-environpython-decouple 之间有什么区别,哪个最适合这个?

设置

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 python-decouple


    【解决方案1】:

    django-environ 可以正常工作,但您需要加载 .env 文件 - 仅实例化 Env 不会这样做:

    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 抱怨未设置的值。

    【讨论】:

    • AttributeError: 'Env' 对象没有属性 'load_envfile' 它会抛出这个错误
    • 使用python-decoupledjango-environ有什么特别的区别
    • 出于某种原因,Decouple 似乎也支持 .ini 文件。 Django-environ otoh 具有有用的帮助器,例如数据库设置。
    猜你喜欢
    • 1970-01-01
    • 2020-10-03
    • 2015-09-12
    • 2012-09-29
    • 2015-02-15
    • 2017-10-13
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多