使用字典执行此操作时并没有真正改变。您只需要将 JSON 字符串解析为 Python 数据结构即可。
在您的应用程序中,而不是像文档中显示的那样对字典进行硬编码:
VALID_USERNAME_PASSWORD_PAIRS = {
'hello': 'world'
}
从环境中提取它,例如像这样:
import json
import os
VALID_USERNAME_PASSWORD_PAIRS = json.loads(os.getenv("VALID_USERNAME_PASSWORD_PAIRS"))
然后将您的用户名设置为 Heroku config vars:
heroku config:set VALID_USERNAME_PASSWORD_PAIRS='{"hello": "world"}'
这里的单引号应该避免大多数特殊字符被你的shell解释的问题。
对于本地开发,您可以设置 VALID_USERNAME_PASSWORD_PAIRS 环境变量,例如如果您使用的是能够理解这一点的工具,请通过 .env 文件。
本地开发的另一种选择是通过添加 default 参数将默认值硬编码到脚本中:
VALID_USERNAME_PASSWORD_PAIRS = json.loads(
os.getenv("VALID_USERNAME_PASSWORD_PAIRS", default='{"local": "default"}')
)
注意我们在这里给default一个字符串,而不是一个字典,因为我们将结果传递给json.loads()。
请谨慎使用最后一个选项,因为您可能会在未设置环境变量的情况下意外发布代码,在这种情况下,本地默认凭据将起作用。