如何解决当生成的 SECRET_KEY 以“$”开头时,如何从环境文件中转义 Django 中的 SECRET_KEY? 如果有机会生成带有前导 '$' 的密钥使用我的生产设置代码在 DJango 中工作,我如何转义 .env 文件中的 SECRET_KEY ?
在我的 Django 项目中,我有一个 .env
文件,其中包含用于生产设置的 SECRET_KEY
。
我通过从命令行运行脚本生成了密钥(这里只是以打印生成的密钥为例)。
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
我的 .env
文件看起来像这样。
DJANGO_SECRET_KEY=$*%0e@-7suq*h#2(srya8n&lhb(qy+73xj_db)tpq4qenknk2%
这是通过以下方式在我的生产设置文件中读取的
import os
import environ
env = environ.Env()
# BASE_DIR is the root level directory of the project
env_file = os.path.join(BASE_DIR,'.env')
if os.path.exists(env_file):
environ.Env.read_env(env_file=env_file) # reading .env file
SECRET_KEY = env('DJANGO_SECRET_KEY')
当我使用这个密钥运行我的 Django 项目时,我收到以下错误
django.core.exceptions.ImproperlyConfigured: Set the *%0e@-7suq*h#2(srya8n&lhb(qy+73xj_db)tpq4qenknk2% environment variable
由于 '$'
字符,Django 似乎认为密钥值本身就是一个环境变量。这是可以理解的,因为 Bash 中的环境变量有一个 '$'
前缀。
但是当我尝试将 .env 文件更改为
DJANGO_SECRET_KEY='$*%0e@-7suq*h#2(srya8n&lhb(qy+73xj_db)tpq4qenknk2%'
或
DJANGO_SECRET_KEY="$*%0e@-7suq*h#2(srya8n&lhb(qy+73xj_db)tpq4qenknk2%"
我遇到了同样的错误。
如果有机会生成带有前导 '$'
的密钥(使用我的生产设置代码在 DJango 中工作),我如何转义 .env 文件中的 SECRET_KEY ?
django 版本:3.0.3
django 环境版本:0.4.5
解决方法
本文here建议使用pip安装dotenv
,彻底简化隐藏秘钥的过程。至少对于初学者来说。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。