如何尝试:除了开发和生产之间?

2024-06-02 08:20:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对这件事感到困惑。我想这应该在开发和生产上都能很好地工作(已经用两种不同的方法在这两种方法上设置了环境变量,但我错了。它只在生产上工作。在开发上它抛出一个长错误,以“django.core.exceptions.impropertlyconfigured:SECRET_KEY设置不能为空”结尾

try:
    SECRET_KEY = os.getenv("PRODUCTION_SECRET_KEY")
except:
    SECRET_KEY = os.environ.get('DEVELOPMENT_SECRET_KEY')

Tags: django方法keycoresecretos错误结尾
2条回答

os.getenv()doesn't throw an error if the environment variable doesn't exist。因此,即使在您的开发环境中,os.getenv()调用也很可能会成功,将SECRET_KEY设置为空值,从而导致Django错误(甚至说设置为空)

您不应该使用try/except语句,因为不会引发错误。相反,您应该使用if语句,例如:

SECRET_KEY = os.getenv('PRODUCTION_SECRET_KEY')
if not SECRET_KEY:
    SECRET_KEY = os.getenv('DEVELOPMENT_SECRET_KEY')

让我们制作一个简单的单例类

class Secret(object):
    def __new__(cls):
        cls.key = os.getenv('PRODUCTION_SECRET_KEY') or os.getenv('DEVELOPMENT_SECRET_KEY')
        if cls.key is None:
            raise SomeError

相关问题 更多 >