【问题标题】:ImproperlyConfigured SECRET_KEY error using django-environ使用 django-environ 配置不当的 SECRET_KEY 错误
【发布时间】:2018-08-31 13:10:24
【问题描述】:

在我的设置中,我使用 django-environ 来设置密钥:

import environ

env = environ.Env()    
SECRET_KEY = env.read_env('SECRET_KEY')  

在我的项目的根目录中,我确实有一个带有实际密钥的 .env 文件:

.env:

SECRET_KEY=qgw6s66n3e$27mmddfua*8yq6n%gz(!mx8e=@zbixk50-h020  

错误将在collectstatic 期间运行。这是回溯:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/django/core/management/__init__.py", line 194, in fetch_command
    settings.INSTALLED_APPS
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/django/conf/__init__.py", line 110, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/sju/Dev/django/blog-api/src/blog/settings/base.py", line 27, in <module>
    SECRET_KEY = env('SECRET_KEY')
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/environ/environ.py", line 130, in __call__
    return self.get_value(var, cast=cast, default=default, parse_default=parse_default)
  File "/Users/sju/.virtualenvs/blog-api/lib/python2.7/site-packages/environ/environ.py", line 275, in get_value
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY environment variable

我错过了什么?

【问题讨论】:

  • 考虑删除问题中的 SECRET_KEY

标签: django environment-variables


【解决方案1】:

我认为你用错了。基于documentation首先需要加载.env文件,然后使用。

试试这个:

import environ
env = environ.Env()
environ.Env.read_env()
SECRET_KEY = env('SECRET_KEY')

还要确保.env 文件位于设置文件的目录中。或者,您可以将文件的位置显式传递给read_csv()

【讨论】:

  • 实际上文档说'SECRET_KEY'需要在os.environ中。不确定我是否理解其中的原因。
  • 好吧,谜团解开了,environ.Env.read() 将变量放在 os.environ 中。我的错。
  • @JamieMarshall 真的吗?我在一些文档中读到尝试将密钥保存在 os.environ 中。所以这个方法就是这样做的。对
  • @legacy 我在评论时验证了这一点。您必须使用您的代码发布一个问题,让我们尝试看看它为什么不适合您
  • @JamieMarshall 是的,你是对的。很抱歉以这种方式发表上述评论。你提到的文档链接有很好的东西,它可以工作。
猜你喜欢
  • 2013-10-08
  • 2015-08-26
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2017-04-12
  • 2021-06-18
  • 1970-01-01
相关资源
最近更新 更多