• <tfoot id='WnLb4'></tfoot>

    <small id='WnLb4'></small><noframes id='WnLb4'>

  • <legend id='WnLb4'><style id='WnLb4'><dir id='WnLb4'><q id='WnLb4'></q></dir></style></legend>
      • <bdo id='WnLb4'></bdo><ul id='WnLb4'></ul>
      <i id='WnLb4'><tr id='WnLb4'><dt id='WnLb4'><q id='WnLb4'><span id='WnLb4'><b id='WnLb4'><form id='WnLb4'><ins id='WnLb4'></ins><ul id='WnLb4'></ul><sub id='WnLb4'></sub></form><legend id='WnLb4'></legend><bdo id='WnLb4'><pre id='WnLb4'><center id='WnLb4'></center></pre></bdo></b><th id='WnLb4'></th></span></q></dt></tr></i><div id='WnLb4'><tfoot id='WnLb4'></tfoot><dl id='WnLb4'><fieldset id='WnLb4'></fieldset></dl></div>

        Django:配置不当:SECRET_KEY 设置不能为空

        Django: ImproperlyConfigured: The SECRET_KEY setting must not be empty(Django:配置不当:SECRET_KEY 设置不能为空)
              <tbody id='ksCY7'></tbody>
          1. <i id='ksCY7'><tr id='ksCY7'><dt id='ksCY7'><q id='ksCY7'><span id='ksCY7'><b id='ksCY7'><form id='ksCY7'><ins id='ksCY7'></ins><ul id='ksCY7'></ul><sub id='ksCY7'></sub></form><legend id='ksCY7'></legend><bdo id='ksCY7'><pre id='ksCY7'><center id='ksCY7'></center></pre></bdo></b><th id='ksCY7'></th></span></q></dt></tr></i><div id='ksCY7'><tfoot id='ksCY7'></tfoot><dl id='ksCY7'><fieldset id='ksCY7'></fieldset></dl></div>
          2. <small id='ksCY7'></small><noframes id='ksCY7'>

            <legend id='ksCY7'><style id='ksCY7'><dir id='ksCY7'><q id='ksCY7'></q></dir></style></legend>
              <tfoot id='ksCY7'></tfoot>
                • <bdo id='ksCY7'></bdo><ul id='ksCY7'></ul>

                  本文介绍了Django:配置不当:SECRET_KEY 设置不能为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试设置多个包含一些基本设置的设置文件(开发、生产……).虽然不能成功.当我尝试运行 ./manage.py runserver 我收到以下错误:

                  I am trying to set up multiple setting files (development, production, ..) that include some base settings. Cannot succeed though. When I try to run ./manage.py runserver I am getting the following error:

                  (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
                  

                  基本设置(包含 SECRET_KEY):

                  Base settings (contain SECRET_KEY):

                  (cb)clime@den /srv/www/cb/cb/settings $ cat base.py:
                  # Django base settings for cb project.
                  
                  import django.conf.global_settings as defaults
                  
                  DEBUG = False
                  TEMPLATE_DEBUG = False
                  
                  INTERNAL_IPS = ('127.0.0.1',)
                  
                  ADMINS = (
                      ('clime', 'clime7@gmail.com'),
                  )
                  
                  MANAGERS = ADMINS
                  
                  DATABASES = {
                      'default': {
                          #'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
                          'ENGINE': 'django.db.backends.postgresql_psycopg2',
                          'NAME': 'cwu',                   # Or path to database file if using sqlite3.
                          'USER': 'clime',                 # Not used with sqlite3.
                          'PASSWORD': '',                  # Not used with sqlite3.
                          'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
                          'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
                      }
                  }
                  
                  # Local time zone for this installation. Choices can be found here:
                  # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
                  # although not all choices may be available on all operating systems.
                  # In a Windows environment this must be set to your system time zone.
                  TIME_ZONE = 'Europe/Prague'
                  
                  # Language code for this installation. All choices can be found here:
                  # http://www.i18nguy.com/unicode/language-identifiers.html
                  LANGUAGE_CODE = 'en-us'
                  
                  SITE_ID = 1
                  
                  # If you set this to False, Django will make some optimizations so as not
                  # to load the internationalization machinery.
                  USE_I18N = False
                  
                  # If you set this to False, Django will not format dates, numbers and
                  # calendars according to the current locale.
                  USE_L10N = False # TODO: make this true and accustom date time input
                  
                  DATE_INPUT_FORMATS = defaults.DATE_INPUT_FORMATS + ('%d %b %y', '%d %b, %y') # + ('25 Oct 13', '25 Oct, 13')
                  
                  # If you set this to False, Django will not use timezone-aware datetimes.
                  USE_TZ = True
                  
                  # Absolute filesystem path to the directory that will hold user-uploaded files.
                  # Example: "/home/media/media.lawrence.com/media/"
                  MEDIA_ROOT = '/srv/www/cb/media'
                  
                  # URL that handles the media served from MEDIA_ROOT. Make sure to use a
                  # trailing slash.
                  # Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
                  MEDIA_URL = '/media/'
                  
                  # Absolute path to the directory static files should be collected to.
                  # Don't put anything in this directory yourself; store your static files
                  # in apps' "static/" subdirectories and in STATICFILES_DIRS.
                  # Example: "/home/media/media.lawrence.com/static/"
                  STATIC_ROOT = '/srv/www/cb/static'
                  
                  # URL prefix for static files.
                  # Example: "http://media.lawrence.com/static/"
                  STATIC_URL = '/static/'
                  
                  # Additional locations of static files
                  STATICFILES_DIRS = (
                      # Put strings here, like "/home/html/static" or "C:/www/django/static".
                      # Always use forward slashes, even on Windows.
                      # Don't forget to use absolute paths, not relative paths.
                  )
                  
                  # List of finder classes that know how to find static files in
                  # various locations.
                  STATICFILES_FINDERS = (
                      'django.contrib.staticfiles.finders.FileSystemFinder',
                      'django.contrib.staticfiles.finders.AppDirectoriesFinder',
                  #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
                  )
                  
                  # Make this unique, and don't share it with anybody.
                  SECRET_KEY = '8lu*6g0lg)9z!ba+a$ehk)xt)x%rxgb$i1&amp;022shmi1jcgihb*'
                  
                  # List of callables that know how to import templates from various sources.
                  TEMPLATE_LOADERS = (
                      'django.template.loaders.filesystem.Loader',
                      'django.template.loaders.app_directories.Loader',
                  #     'django.template.loaders.eggs.Loader',
                  )
                  
                  TEMPLATE_CONTEXT_PROCESSORS = (
                      'django.contrib.auth.context_processors.auth',
                      'django.core.context_processors.request',
                      'django.core.context_processors.debug',
                      'django.core.context_processors.i18n',
                      'django.core.context_processors.media',
                      'django.core.context_processors.static',
                      'django.core.context_processors.tz',
                      'django.contrib.messages.context_processors.messages',
                      'web.context.inbox',
                      'web.context.base',
                      'web.context.main_search',
                      'web.context.enums',
                  )
                  
                  MIDDLEWARE_CLASSES = (
                      'django.middleware.common.CommonMiddleware',
                      'django.contrib.sessions.middleware.SessionMiddleware',
                      'django.middleware.csrf.CsrfViewMiddleware',
                      'django.contrib.auth.middleware.AuthenticationMiddleware',
                      'django.contrib.messages.middleware.MessageMiddleware',
                      'watson.middleware.SearchContextMiddleware',
                      'debug_toolbar.middleware.DebugToolbarMiddleware',
                      'middleware.UserMemberMiddleware',
                      'middleware.ProfilerMiddleware',
                      'middleware.VaryOnAcceptMiddleware',
                      # Uncomment the next line for simple clickjacking protection:
                      # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
                  )
                  
                  ROOT_URLCONF = 'cb.urls'
                  
                  # Python dotted path to the WSGI application used by Django's runserver.
                  WSGI_APPLICATION = 'cb.wsgi.application'
                  
                  TEMPLATE_DIRS = (
                      # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
                      # Always use forward slashes, even on Windows.
                      # Don't forget to use absolute paths, not relative paths.
                      '/srv/www/cb/web/templates',
                      '/srv/www/cb/templates',
                  )
                  
                  INSTALLED_APPS = (
                      'django.contrib.auth',
                      'django.contrib.contenttypes',
                      'django.contrib.sessions',
                      'django.contrib.sites',
                      'django.contrib.messages',
                      'django.contrib.staticfiles',
                      'south',
                      'grappelli', # must be before admin
                      'django.contrib.admin',
                      'django.contrib.admindocs',
                      'endless_pagination',
                      'debug_toolbar',
                      'djangoratings',
                      'watson',
                      'web',
                  )
                  
                  AUTH_USER_MODEL = 'web.User'
                  
                  # A sample logging configuration. The only tangible logging
                  # performed by this configuration is to send an email to
                  # the site admins on every HTTP 500 error when DEBUG=False.
                  # See http://docs.djangoproject.com/en/dev/topics/logging for
                  # more details on how to customize your logging configuration.
                  LOGGING = {
                      'version': 1,
                      'disable_existing_loggers': False,
                      'filters': {
                          'require_debug_false': {
                              '()': 'django.utils.log.RequireDebugFalse'
                          }
                      },
                      'formatters': {
                          'standard': {
                              'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
                              'datefmt' : "%d/%b/%Y %H:%M:%S"
                          },
                      },
                      'handlers': {
                          'mail_admins': {
                              'level': 'ERROR',
                              'filters': ['require_debug_false'],
                              'class': 'django.utils.log.AdminEmailHandler'
                          },
                          'null': {
                              'level':'DEBUG',
                              'class':'django.utils.log.NullHandler',
                          },
                          'logfile': {
                              'level':'DEBUG',
                              'class':'logging.handlers.RotatingFileHandler',
                              'filename': "/srv/www/cb/logs/application.log",
                              'maxBytes': 50000,
                              'backupCount': 2,
                              'formatter': 'standard',
                          },
                          'console':{
                              'level':'INFO',
                              'class':'logging.StreamHandler',
                              'formatter': 'standard'
                          },
                      },
                      'loggers': {
                          'django.request': {
                              'handlers': ['mail_admins'],
                              'level': 'ERROR',
                              'propagate': True,
                          },
                          'django': {
                              'handlers':['console'],
                              'propagate': True,
                              'level':'WARN',
                          },
                          'django.db.backends': {
                              'handlers': ['console'],
                              'level': 'DEBUG',
                              'propagate': False,
                          },
                          'web': {
                              'handlers': ['console', 'logfile'],
                              'level': 'DEBUG',
                          },
                      },
                  }
                  
                  LOGIN_URL = 'login'
                  LOGOUT_URL = 'logout'
                  
                  #ENDLESS_PAGINATION_LOADING = """
                  #    <img src="/static/web/img/preloader.gif" alt="loading" style="margin:auto"/>
                  #"""
                  ENDLESS_PAGINATION_LOADING = """
                      <div class="spinner small" style="margin:auto">
                          <div class="block_1 spinner_block small"></div>
                          <div class="block_2 spinner_block small"></div>
                          <div class="block_3 spinner_block small"></div>
                      </div>
                  """
                  
                  DEBUG_TOOLBAR_CONFIG = {
                      'INTERCEPT_REDIRECTS': False,
                  }
                  
                  import django.template.loader
                  django.template.loader.add_to_builtins('web.templatetags.cb_tags')
                  django.template.loader.add_to_builtins('web.templatetags.tag_library')
                  
                  WATSON_POSTGRESQL_SEARCH_CONFIG = 'public.english_nostop'
                  

                  其中一个设置文件:

                  (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 模块的魔法.

                  If I add from base import * into /srv/www/cb/cb/settings/__init__.py (which is otherwise empty), it magically starts to work but I don't understand why. Anyone could explain to me what's going on here? It must be some python module magic.

                  如果我从 base.py 中删除这一行,一切都会开始工作

                  Everything also starts to work if I remove this line from base.py

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

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

                  If I remove this line from web.templatetags.cb_tags, it also starts to work:

                  from endless_pagination.templatetags import endless
                  

                  我猜是因为,最终,它导致了

                  I guess it is because, in the end, it leads to

                  from django.conf import settings
                  PER_PAGE = getattr(settings, 'ENDLESS_PAGINATION_PER_PAGE', 10)
                  

                  所以它创造了一些奇怪的圆形东西,游戏结束了.

                  So it creates some weird circular stuff and game over.

                  推荐答案

                  我遇到了同样的错误,结果是设置加载的模块或类与设置模块本身之间存在循环依赖关系.在我的例子中,它是一个在设置中命名的中间件类,它本身试图加载设置.

                  I had the same error and it turned out to be a circular dependency between a module or class loaded by the settings and the settings module itself. In my case it was a middleware class which was named in the settings which itself tried to load the settings.

                  这篇关于Django:配置不当:SECRET_KEY 设置不能为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Split a Pandas column of lists into multiple columns(将 Pandas 的列表列拆分为多列)
                  How does the @property decorator work in Python?(@property 装饰器在 Python 中是如何工作的?)
                  What is the difference between old style and new style classes in Python?(Python中的旧样式类和新样式类有什么区别?)
                  How to break out of multiple loops?(如何打破多个循环?)
                  How to put the legend out of the plot(如何将传说从情节中剔除)
                  Why is the output of my function printing out quot;Nonequot;?(为什么我的函数输出打印出“无?)
                  • <bdo id='2QtGQ'></bdo><ul id='2QtGQ'></ul>

                        <small id='2QtGQ'></small><noframes id='2QtGQ'>

                          <tbody id='2QtGQ'></tbody>
                        <tfoot id='2QtGQ'></tfoot>
                      • <legend id='2QtGQ'><style id='2QtGQ'><dir id='2QtGQ'><q id='2QtGQ'></q></dir></style></legend>
                        • <i id='2QtGQ'><tr id='2QtGQ'><dt id='2QtGQ'><q id='2QtGQ'><span id='2QtGQ'><b id='2QtGQ'><form id='2QtGQ'><ins id='2QtGQ'></ins><ul id='2QtGQ'></ul><sub id='2QtGQ'></sub></form><legend id='2QtGQ'></legend><bdo id='2QtGQ'><pre id='2QtGQ'><center id='2QtGQ'></center></pre></bdo></b><th id='2QtGQ'></th></span></q></dt></tr></i><div id='2QtGQ'><tfoot id='2QtGQ'></tfoot><dl id='2QtGQ'><fieldset id='2QtGQ'></fieldset></dl></div>