如何在Python中管理环境变量来存储类型布尔数据

问题描述 投票:0回答:1

我查看了其他相关论坛的回复,但没有找到明确的答案。我本想对相关帖子发表评论以寻求澄清,但我的声誉太低了。所以,我被迫提出一个新问题。如果这是不正确的协议,请原谅我,因为我找不到适合这种情况的正确协议。

问题: 在一篇旧帖子中,我找到了这样的信息: 环境变量始终是字符串。非空字符串始终为布尔值 True,即使它包含字符串“False”。

您需要将值与字符串进行比较:

DEBUG = (os.environ.get('DJANGO_DEBUG') == "True") 或者,当您想在非调试模式下运行时,只需从 IIS 设置中完全删除该变量即可。

在我的代码中,我有以下内容:

import os
from dotenv import load_dotenv, find_dotenv

load_dotenv(find_dotenv())

DEBUG = bool(os.environ.get("DEBUG")) #environment variable "DEBUG" is set to False in my .env file
print(type(DEBUG)) #<class 'bool'>

我将在 Django 应用程序的 settings.py 中使用这些语句来初始化 DEBUG 变量。与上面的初始方法相比,以这种方式编写代码有什么问题吗?

谢谢您的帮助。

python boolean .env
1个回答
0
投票

有一个包

django-environ
可以帮助您管理这些类型的事情。 它提供了从环境以及本地
.env
文件中解析变量的能力。您可以轻松地将这些变量的值转换为某些类型。

示例:

### Django settings base.py
import environ

# Initialize environ
env = environ.Env()

# Optionaly read .env file when working locally
root_env = str(ROOT_DIR.path('.env'))
if os.path.exists(root_env):
    env.read_env(root_env)

# Use env.bool() method to parse the env variable value and cast it to bool
DEBUG = env.bool('DJANGO_DEBUG', False)
© www.soinside.com 2019 - 2024. All rights reserved.