如何在 Django 中的 views.py 中使用环境变量?

问题描述

我正在使用 python-decouple 3.4 为我的 Django 应用程序设置环境变量。我的 .env 文件manage.py 位于同一目录中。除了 SECRET_KEY(在 settings.py 中),在 settings.pyviews.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 的帮助。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...