在__getitem__中将None引发KeyError(key)

时间:2019-10-07 11:47:26

标签: 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时发生错误。

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

要使其正常运行,缺少什么?

1 个答案:

答案 0 :(得分:0)

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

我在.bat文件的底部设置了这样的内容:

set DATABASE_PW=dbpass

它有效。如果您在Linux或Mac上运行,则如果计划以相同的方式进行操作,则需要使用正确的激活文件。