• <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 设置不能为空

        时间:2024-04-21
              <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 设置不能为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何克隆 Django 模型实例对象并将其保存到数据库中? 下一篇:Django聚合:两个字段相乘的总和

                  相关文章

                  • <bdo id='2QtGQ'></bdo><ul id='2QtGQ'></ul>

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

                    <tfoot id='2QtGQ'></tfoot>
                  1. <legend id='2QtGQ'><style id='2QtGQ'><dir id='2QtGQ'><q id='2QtGQ'></q></dir></style></legend>
                  2. <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>