python - 在 __getitem__ 中从 None 引发 KeyError(key)

标签 python django

我目前正在学习一个教程,其中数据库密码被隐藏/激活为环境激活文件中的变量。在 Django local_settings.py 中,应该像这样检索密码:

"PASSWORD": os.environ['DATABASE_PW'],

但是,这给了我错误:

  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\User\Desktop\blog\project\project\settings.py"
, line 325, in <module>
    exec(open(f, "rb").read())
  File "<string>", line 21, in <module>
  File "C:\Users\User\Envs\blog\lib\os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'DATABASE_PW'

环境激活文件中,密码保存为:

export DATABASE_PW = 'dbpass'

设置密码期间服务器尚未运行,当我尝试运行 python manage.py runserver 时发生错误。

在尝试运行服务器之前,我还停用并重新激活了环境。

要让它发挥作用还缺少什么?

最佳答案

由于我在Windows上运行,因此激活环境激活文件中隐藏变量的正确方法是将它们放入activate.bat文件中。

我在 .bat 文件底部这样设置:

set DATABASE_PW=dbpass

而且它有效。如果您在 Linux 或 Mac 上运行,并且打算以相同的方式执行操作,则需要使用正确的激活文件。

关于python - 在 __getitem__ 中从 None 引发 KeyError(key),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268953/

相关文章:

python - 使用正则表达式仅打印字符串中的字母

python3-不使用更新的全局变量值,而是使用旧值

python - 用作变量时如何在win32中运行VBA宏

python - 谷歌应用引擎 : Webtest simulating logged in user and administrator

javascript - 在提交之前多次使用表单

python的subprocess.Popen跳过输入

Django:如何将我的基于函数的 View 重新创建为(通用编辑)基于类的 View

python - 如何将 ManyToManyField 与另一个 ManyToManyField 进行比较

python - 通过远程 Active Directory 单点登录到 Django 站点

python - Django - 捕获异常