问题描述
我正在使用 python-decouple 3.4 为我的 Django 应用程序设置环境变量。我的 .env
文件与 manage.py
位于同一目录中。除了 SECRET_KEY(在 settings.py 中),在 settings.py
或 views.py
中加载其他环境变量直接失败,表明它们尚未定义。其他产生错误的环境变量将在 views.py
中使用。
这是我的 .env
文件:-
SECRET_KEY=<django_app_secret_key>
file_path=<path_to_the file>
如果我尝试在 settings.py
中定义它们,例如:-
from decouple import config
FILE_PATH = config('file_path')
然后在views.py
中使用它们,
from django.conf.settings import FILE_PATH
print(FILE_PATH)
然后我也得到同样的错误。如何专门为我的 views.py
定义环境变量?
[编辑:这是我得到的错误:-
raise UndefinedValueError('{} not found. Declare it as envvar or define a default value.'.format(option))
decouple.UndefinedValueError: file_path not found. Declare it as envvar or define a default value.
我是否使用过这个
from decouple import config
FILE_PATH = config('file_path')
直接在 settings.py
中或直接在 views.py
中或先在 settings.py
中然后在 views.py
中,如上例所示]
解决方法
我复制了你解释的相同代码,它对我有用。 .env 文件应该位于 manage.py 所在的根文件夹中。确保您引用的是相同的设置文件:
python manage.py runserver --settings=yourproj.settings.production
在 .env 文件中:
file_path='/my/path'
在 settings.py 文件中:
from decouple import config
FILE_PATH = config('file_path')
也在views.py文件中导入应该是这样的:
from django.conf import settings
print(settings.FILE_PATH)
,
在 .env
文件中,分配给变量的值没有包含在 qoutes 中,这就是为什么它会给出无法找到 file_path
变量的错误。
.env
文件应该是这样的:-
SECRET_KEY='<django_app_secret_key>'
file_path='<path_to_the file>'
无论如何感谢 @Iain Shelvington 和 @Prakash S 的帮助。