在 miniconda 环境中隐藏 django secret_key 时出错
Error when hiding django secret_key in miniconda environment
我完全是个新手,我正在尝试做这个项目,这是我第一次,而且快完成了。我尝试了这个 SO thread to move secret key from settings. In every method i got some kind of error, even from this official django doc mathod 中提到的所有方法。我找不到哪里出错了。
当密钥在 settings.py 中时,一切都非常顺利。但我需要将我的代码推送到 git,所以我必须将它从 settings.py.
中隐藏起来
现在我在尝试使用 django-environ 时添加详细信息,以将密钥保存在 settings.py 之外。
我将内容放在根项目文件夹中。
我正在使用 miniconda:4.10.1。这是我的 requirement.txt.
# platform: linux-64
_libgcc_mutex=0.1=main
_openmp_mutex=4.5=1_gnu
appdirs=1.4.4=py_0
asgiref=3.3.4=pyhd3eb1b0_0
attrs=21.2.0=pyhd3eb1b0_0
black=19.10b0=py_0
ca-certificates=2021.5.30=ha878542_0
certifi=2021.5.30=py39hf3d152e_0
click=8.0.1=pyhd3eb1b0_0
django=3.2.4=pyhd3eb1b0_0
django-environ=0.4.5=py_1
importlib-metadata=3.10.0=py39h06a4308_0
krb5=1.17.1=h173b8e3_0
ld_impl_linux-64=2.35.1=h7274673_9
libedit=3.1.20210216=h27cfd23_1
libffi=3.3=he6710b0_2
libgcc-ng=9.3.0=h5101ec6_17
libgomp=9.3.0=h5101ec6_17
libpq=12.2=h20c2e04_0
libstdcxx-ng=9.3.0=hd4cf53a_17
mypy_extensions=0.4.1=py39h06a4308_0
ncurses=6.2=he6710b0_1
openssl=1.1.1k=h7f98852_0
pathspec=0.7.0=py_0
pip=21.1.2=py39h06a4308_0
psycopg2=2.8.6=py39h3c74f83_1
python=3.9.5=h12debd9_4
python_abi=3.9=1_cp39
pytz=2021.1=pyhd3eb1b0_0
readline=8.1=h27cfd23_0
regex=2021.4.4=py39h27cfd23_0
setuptools=52.0.0=py39h06a4308_0
six=1.16.0=pyh6c4a22f_0
sqlite=3.35.4=hdfb4753_0
sqlparse=0.4.1=py_0
tk=8.6.10=hbc83047_0
toml=0.10.2=pyhd3eb1b0_0
typed-ast=1.4.2=py39h27cfd23_1
typing_extensions=3.7.4.3=pyha847dfd_0
tzdata=2020f=h52ac0ba_0
wheel=0.36.2=pyhd3eb1b0_0
xz=5.2.5=h7b6447c_0
zipp=3.4.1=pyhd3eb1b0_0
zlib=1.2.11=h7b6447c_3
settings.py
import os
import environ
from pathlib import Path
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')
# False if not in os.environ
DEBUG = env('DEBUG')
我没有添加其余设置。我认为这不重要。如果需要请提及 I.ll 更新。
我将 .env 文件放在项目的根目录中 manage.py 和 db.sqlite3
.env
#env file
DEBUG=on
#copied the entire line from settings.py
SECRET_KEY ='xxxx django secret key here xxxx'
while 运行 “python manage.py runserver”,我得到了这个错误。
我不确定我错过了什么。我遇到了某种错误,当我尝试每种方法时,错误都不相同。抱歉,我无法在这里解释所有方法和错误。
此表单中有几个问题。但大多数都没有回答,有些没有准确解释我的情况。如果需要任何其他信息或需要更多说明,请提及。
首先检查您是否安装了 django-environ
,也许您在 requirements.txt 中输入错误应该是 django-environ=0.4.5
而不是 django-environ=0.4.5=py_1
您可以在 read_env(env_file="relative_path_of_your_env_file")
中传递 .env
的路径
它将 .env
文件读入 os.environ
。
如果没有给出 dotenv 路径的路径,是否进行肮脏的魔法堆栈回溯
找到 manage.py
然后找到 dotenv
.
完成此代码https://github.com/joke2k/django-environ/blob/master/environ/environ.py#L614
从文件树的结构可以看出.env文件放在了项目的根目录下。检查错误消息时,可以看出正在搜索 .env 文件的人正在检查与 settings.py.
相同的位置
所以,简短的回答是,如果您使用 django-environ 将密钥保存在外部,请将 .env 文件放在一起与 settings.py 在同一目录中。
更详细的内容可以参考这篇link。我觉得它适合新手。
我完全是个新手,我正在尝试做这个项目,这是我第一次,而且快完成了。我尝试了这个 SO thread to move secret key from settings. In every method i got some kind of error, even from this official django doc mathod 中提到的所有方法。我找不到哪里出错了。
当密钥在 settings.py 中时,一切都非常顺利。但我需要将我的代码推送到 git,所以我必须将它从 settings.py.
中隐藏起来现在我在尝试使用 django-environ 时添加详细信息,以将密钥保存在 settings.py 之外。
我将内容放在根项目文件夹中。
我正在使用 miniconda:4.10.1。这是我的 requirement.txt.
# platform: linux-64
_libgcc_mutex=0.1=main
_openmp_mutex=4.5=1_gnu
appdirs=1.4.4=py_0
asgiref=3.3.4=pyhd3eb1b0_0
attrs=21.2.0=pyhd3eb1b0_0
black=19.10b0=py_0
ca-certificates=2021.5.30=ha878542_0
certifi=2021.5.30=py39hf3d152e_0
click=8.0.1=pyhd3eb1b0_0
django=3.2.4=pyhd3eb1b0_0
django-environ=0.4.5=py_1
importlib-metadata=3.10.0=py39h06a4308_0
krb5=1.17.1=h173b8e3_0
ld_impl_linux-64=2.35.1=h7274673_9
libedit=3.1.20210216=h27cfd23_1
libffi=3.3=he6710b0_2
libgcc-ng=9.3.0=h5101ec6_17
libgomp=9.3.0=h5101ec6_17
libpq=12.2=h20c2e04_0
libstdcxx-ng=9.3.0=hd4cf53a_17
mypy_extensions=0.4.1=py39h06a4308_0
ncurses=6.2=he6710b0_1
openssl=1.1.1k=h7f98852_0
pathspec=0.7.0=py_0
pip=21.1.2=py39h06a4308_0
psycopg2=2.8.6=py39h3c74f83_1
python=3.9.5=h12debd9_4
python_abi=3.9=1_cp39
pytz=2021.1=pyhd3eb1b0_0
readline=8.1=h27cfd23_0
regex=2021.4.4=py39h27cfd23_0
setuptools=52.0.0=py39h06a4308_0
six=1.16.0=pyh6c4a22f_0
sqlite=3.35.4=hdfb4753_0
sqlparse=0.4.1=py_0
tk=8.6.10=hbc83047_0
toml=0.10.2=pyhd3eb1b0_0
typed-ast=1.4.2=py39h27cfd23_1
typing_extensions=3.7.4.3=pyha847dfd_0
tzdata=2020f=h52ac0ba_0
wheel=0.36.2=pyhd3eb1b0_0
xz=5.2.5=h7b6447c_0
zipp=3.4.1=pyhd3eb1b0_0
zlib=1.2.11=h7b6447c_3
settings.py
import os
import environ
from pathlib import Path
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')
# False if not in os.environ
DEBUG = env('DEBUG')
我没有添加其余设置。我认为这不重要。如果需要请提及 I.ll 更新。
我将 .env 文件放在项目的根目录中 manage.py 和 db.sqlite3
.env
#env file
DEBUG=on
#copied the entire line from settings.py
SECRET_KEY ='xxxx django secret key here xxxx'
while 运行 “python manage.py runserver”,我得到了这个错误。
我不确定我错过了什么。我遇到了某种错误,当我尝试每种方法时,错误都不相同。抱歉,我无法在这里解释所有方法和错误。
此表单中有几个问题。但大多数都没有回答,有些没有准确解释我的情况。如果需要任何其他信息或需要更多说明,请提及。
首先检查您是否安装了 django-environ
,也许您在 requirements.txt 中输入错误应该是 django-environ=0.4.5
而不是 django-environ=0.4.5=py_1
您可以在 read_env(env_file="relative_path_of_your_env_file")
.env
的路径
它将 .env
文件读入 os.environ
。
如果没有给出 dotenv 路径的路径,是否进行肮脏的魔法堆栈回溯
找到 manage.py
然后找到 dotenv
.
完成此代码https://github.com/joke2k/django-environ/blob/master/environ/environ.py#L614
从文件树的结构可以看出.env文件放在了项目的根目录下。检查错误消息时,可以看出正在搜索 .env 文件的人正在检查与 settings.py.
相同的位置所以,简短的回答是,如果您使用 django-environ 将密钥保存在外部,请将 .env 文件放在一起与 settings.py 在同一目录中。
更详细的内容可以参考这篇link。我觉得它适合新手。