python-3.x - 如何为 django settings.py 文件覆盖 os.environ.get()
问题描述
我正在使用一些环境变量。如果环境变量中的一行具有我之前放置的标志,我可以使用它们来获取它们os.environ.get("somekey", None)
。我想应用一些逻辑。
环境中的示例行:
FILE_PASS=password
FILE_NAME=examplefile #CHECK
在 settings.py 中:
file_pass = os.environ.get("FILE_PASS", "")
file_name = os.environ.get("FILE_NAME","default_file")
我不想写my_custom_env()
,因为我希望每个人都在我的逻辑后面继续使用 os.environ.get 函数。
我怎样才能做到这一点?编辑:这是调用猴子补丁吗?EDIT2:我想我想要的是这样的
import os
def new_os_environ(key, default=''):
env = os.environ
line = env.get(key, default)
if "#CHECK" in line:
#do some stuff
return line
os.environ.get = new_os
os.environ.get("FILE_NAME","heey")
解决方案
这个:
if "#CHECK" in line:
#do some stuff
将不起作用,因为#CHECK
将被视为注释,并且不会与env.get
命令一起显示。
我想你可以逐行读取文件,但更好的方法是在 env 文件中添加一个新变量。类似于以下内容:
CHECK=TRUE
然后您可以专门检查该值是否存在并进行相应的编码。
check = os.environ.get("CHECK","FALSE")
if check == "TRUE":
# Do your stuff herre
如果您想直接使用布尔值,请使用 1 和零。我更喜欢文本字符串 TRUE 和 FALSE,因为我认为它们更突出,让你在做什么更明显,但这只是个人喜好。
推荐阅读
- java - 如何比较 Arraylist(Java) 中每对的 2 个元素
- sql - 使用天数删除SQL中的重复记录
- c# - 从 chrome 85 开始的零星 Selenium Chrome WebDriver 超时
- php - DDD 和助手类
- python - 如何检查 dequeue 是否没有元素(空)
- android - 无法实例化活动。我只连接库
- javascript - 意外的令牌,应为“;”
- python - 如何在jupyter中保存由%timeit测量的函数结果?
- flutter - Flutter listview 在其内容滚动屏幕的末尾
- angular - Angular 10 组件输入到反应形式默认值