Django:配置不正确:SECRET_KEY设置不得为空

我正在尝试设置包括一些基本设置的多个设置文件(开发,生产等)。虽然无法成功。当我尝试运行./manage.py runserver时,出现以下错误:


(cb)clime@den /srv/www/cb $ ./manage.py runserver

ImproperlyConfigured: The SECRET_KEY setting must not be empty.

这是我的设置模块:


(cb)clime@den /srv/www/cb/cb/settings $ ll

total 24

-rw-rw-r--. 1 clime clime 8230 Oct  2 02:56 base.py

-rw-rw-r--. 1 clime clime  489 Oct  2 03:09 development.py

-rw-rw-r--. 1 clime clime   24 Oct  2 02:34 __init__.py

-rw-rw-r--. 1 clime clime  471 Oct  2 02:51 production.py

设置文件之一:


(cb)clime@den /srv/www/cb/cb/settings $ cat development.py 

from base import *


DEBUG = True

TEMPLATE_DEBUG = True


ALLOWED_HOSTS = ['127.0.0.1', '31.31.78.149']


DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.postgresql_psycopg2',

        'NAME': 'cwu',

        'USER': 'clime',

        'PASSWORD': '',

        'HOST': '',

        'PORT': '',

    }

}


MEDIA_ROOT = '/srv/www/cb/media/'


STATIC_ROOT = '/srv/www/cb/static/'


TEMPLATE_DIRS = (

    '/srv/www/cb/web/templates',

    '/srv/www/cb/templates',

)

代码在manage.py:


(cb)clime@den /srv/www/cb $ cat manage.py 

#!/usr/bin/env python

import os

import sys


if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cb.settings.development")


    from django.core.management import execute_from_command_line


    execute_from_command_line(sys.argv)

如果添加from base import *到/srv/www/cb/cb/settings/__init__.py(否则为空),它会神奇地开始工作,但我不明白为什么。任何人都可以向我解释这是怎么回事?它一定是一些python模块魔术。


编辑:如果我从base.py删除此行,一切也将开始工作


django.template.loader.add_to_builtins('web.templatetags.cb_tags')

如果我从web.templatetags.cb_tags中删除此行,它也将开始工作:


from endless_pagination.templatetags import endless

我想这是因为最终导致


from django.conf import settings

PER_PAGE = getattr(settings, 'ENDLESS_PAGINATION_PER_PAGE', 10)

因此,它会产生一些怪异的循环内容并结束游戏。


桃花长相依
浏览 3855回答 3
3回答

拉莫斯之舞

我有同样的错误,结果是设置加载的模块或类与设置模块本身之间存在循环依赖关系。在我的情况下,这是一个中间件类,该类在设置中被命名,该类本身试图加载设置。
打开App,查看更多内容
随时随地看视频慕课网APP