使用 django-environ 时配置不正确的 SECRET_KEY 错误

问题描述 投票:0回答:3

在我的设置中,我使用 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

我错过了什么?

django environment-variables
3个回答
11
投票

我认为你用错了。根据文档,您首先需要加载

.env
文件,然后使用它。

试试这个:

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

还要确保

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


2
投票

试试这个:

import os
import environ

BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')

成功了。


0
投票

我也有类似的问题。 就我而言,这是由 Windows 上的 .env 文件格式引起的。 键、等号和值的名称之间不能有空格。 所以:

SECRET_KEY='my_secret_key'

可以工作但是

SECRET_KEY= 'my_secret_key' 

SECRET_KEY ='my_secret_key' 

SECRET_KEY = 'my_secret_key'

会调用异常。 它也在异常消息的开头打印出来,如下所示:

Invalid line: SECRET_KEY = 'my_secret_key'
Invalid line: DEBUG = True
© www.soinside.com 2019 - 2024. All rights reserved.