장고: 잘못 구성됨: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
기본 설정(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&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
(그렇지 않으면 비어 있음), 마법처럼 작동하기 시작하지만 왜 그런지 이해할 수 없습니다.여기서 무슨 일이 일어나고 있는지 설명해 줄 사람?파이썬 모듈 마법인가 봅니다.
편집: 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)
그래서 그것은 이상한 순환적인 것들을 만들고 게임 오버를 만듭니다.
저도 같은 오류가 있었는데 설정에 의해 로드된 모듈 또는 클래스와 설정 모듈 자체 사이의 순환 종속성으로 판명되었습니다.제 경우에는 설정 자체를 로드하려고 하는 설정에서 이름이 지정된 미들웨어 클래스였습니다.
다니엘 그린필드의 책 장고의 두 스쿠프의 지침에 따라 설정을 재구성한 후 같은 문제에 부딪혔습니다.
설정을 통해 문제를 해결했습니다.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings.local")
manage.py
그리고.wsgi.py
.
업데이트:
에서, 위의해에서책결,서,local
의 로컬 environment.py 에 대한 나의 설정 폴더 에 있는 나의 폴더 안에 파로이로(컬입/컬다)니로컬.py다
이 문제를 해결하는 또 다른 방법은 모든 공통 설정을 settings/base.py 내에 유지한 다음 프로덕션, 스테이징 및 개발 환경을 위한 3개의 별도 설정 파일을 만드는 것입니다.
설정 폴더는 다음과 같습니다.
settings/
__init__.py
base.py
local.py
prod.py
stage.py
를 그고다리당안보요세관하에신의드코를에 하세요.settings/__init__.py
from .base import *
env_name = os.getenv('ENV_NAME', 'local')
if env_name == 'prod':
from .prod import *
elif env_name == 'stage':
from .stage import *
else:
from .local import *
오류가 있었습니다.python manage.py runserver
.
저는 오래된 컴파일된 바이너리(.pyc) 파일 때문이라는 것을 알게 되었습니다.프로젝트에서 해당 파일을 모두 삭제한 후 서버가 다시 실행되기 시작했습니다.:)
따라서 이러한 오류가 발생할 경우, 즉 장고 설정과 관련된 어떠한 변경도 하지 않고 첫 번째 조치를 취할 수 있습니다.
.pyc 파일 제거
.pyc를 삭제하기 위한 Ubuntu 터미널 명령: find . -name "*.pyc" -exec rm -rf {} \;
python manage.py runserver를 실행했을 때도 같은 오류가 발생했습니다..pyc 파일 때문입니다.프로젝트 디렉토리에서 .pyc 파일을 삭제하고 작동하고 있었습니다.
설정 파일을 지정하지 않았습니다.
python manage.py runserver --settings=my_project.settings.develop
저도 셀러리와 같은 문제가 있었습니다.이전의 나의 setting.py :
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
이후:
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', <YOUR developing key>)
환경 변수가 정의되지 않은 경우: SECRET_KEY = YOUR developing key
기지에 있기 때문에 작동하기 시작합니다.py 당신은 기본 설정 파일에 필요한 모든 정보를 가지고 있습니다.라인이 필요합니다.
SECRET_KEY = '8lu*6g0lg)9z!ba+a$ehk)xt)x%rxgb$i1&022shmi1jcgihb*'
그래서 효과가 있고 당신이 할 때.from base import *
를 SECRET_KEY로 .development.py
.
사용자 지정 설정을 수행하기 전에 항상 기본 설정을 가져와야 합니다.
때, " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "from base import *
東京의 __init__.py
환경 오류인 것 같습니다. 다음을 설정해 보십시오.DJANGO_SETTINGS_MODULE='correctly_settings'
PyCharm을 사용하는 모든 사용자에게 녹색 "선택한 구성 실행" 버튼은 이 오류를 발생시키지만 다음을 실행합니다.
py manage.py runserver 127.0.0.1:8000 --settings=app_name.settings.development
이 문제를 해결하려면 구성의 환경 변수를 편집해야 합니다.이렇게 하려면 녹색 실행 단추 왼쪽에 있는 "실행/디버그 구성 선택" 드롭다운 메뉴를 누른 후 "구성 편집"을 누릅니다. 변수 "환경서"를 합니다.DJANGO_SETTINGS_MODULE
app_name.settings.development
.
개발을 위해 settings.py 만 업데이트하면 작동할 것입니다.
SECRET_KEY = '*'
설정 디렉토리의 init.py 에 다음과 같이 올바른 가져오기를 기록합니다.
from Project.settings.base import *
wsgi를 변경할 필요가 없습니다.py 또는 manage.py
저는 django 1.5와 1.6을 모두 사용하는 OS X에서 발생하는 이 문제를 virtualenv에 대한 모든 활성 세션을 비활성화하고 다시 시작함으로써 해결했습니다.
다른 잠재적인 솔루션을 혼합물에 투입하기 위해, 저는settings
및 더및폴settings.py
환경 파일로 환경 기반 설정 파일에서 하나의 파일로 다시 전환했습니다.그 이후로 다시 생각해 보았습니다.)
은 내가 Python을 가져오기를 .project/settings.py
또는project/settings/__init__.py
는 습했니다거를 했습니다.settings
디르 그리고 이제 모든 것이 잘 작동합니다.
데이터베이스 이름의 철자가 잘못되었을 때 이 오류가 발생했다는 것을 추가하고 싶습니다.settings.py
파일을 생성하여 DB를 만들 수 없습니다.
1.8.4에서 오타가 있는 템플릿 설정을 수정하여 이 문제를 해결했습니다(템플릿 제거['debug'] 해결).
최근에 변경한 설정을 검토하고 모든 키가 기본적으로 설정되어 있는지 확인합니다.
Mac OS가 설정 파일에서 설정된 환경 변수를 찾지 못해서 마음에 들지 않았습니다.
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('MY_SERVER_ENV_VAR_NAME')
그러나 로컬 Mac OS 개발 환경에 환경 변수를 추가한 후 다음 오류가 사라졌습니다.
export MY_SERVER_ENV_VAR_NAME ='fake dev security key that is longer than 50 characters.'
저의 경우, 저는 또한 다음을 추가해야 했습니다.--settings
매개변수:
python3 manage.py check --deploy --settings myappname.settings.production
여기서 production.py 은 설정 폴더 안에 운영 관련 설정이 들어 있는 파일입니다.
제게 문제가 된 것은 전화하는 것이었습니다.get_text_noop
읽기 쉬운 말로
변화하는
LANGUAGES = (
('en-gb', get_text_noop('British English')),
('fr', get_text_noop('French')),
)
로.
from django.utils.translation import gettext_lazy as _
LANGUAGES = (
('en-gb', _('British English')),
('fr', _('French')),
)
된 파일은 다음과 같습니다.ImproperlyConfigured: The SECRET_KEY setting must not be empty
예외.
이렇게 다양한 답변이 나오는 이유는 이 예외가 SECRET_KEY와 아무런 관련이 없기 때문입니다.그것은 아마도 삼켜지고 있는 이전의 예외일 것입니다.실제 예외를 보려면 DEBUG=True를 사용하여 디버깅을 켭니다.
이 경우 설정을 시도하다가 중요한 단계를 놓쳤기 때문입니다.
참고: 아래 지침에서는 .env.dll 및 .env를 settings.py 와 동일한 폴더에 저장해야 합니다.
라고 잘못 생각했습니다..env
내 프로젝트의 뿌리에 속했습니다.다과같폴이동과 settings.py
문제를 해결했습니다.
Python 콘솔의 이 오류 메시지가 저를 올바른 길로 인도한 단서였습니다.
Warning: /Users/allen/PycharmProjects/myapp/myapp/.env doesn't exist - if you're not configuring your environment separately, create one.
는 이의 공백을 했습니다.=
) 내 안에서.env
java.
나의 경우 문제는 - 나는 나의 것을 가지고 있었습니다.app_folder
그리고.settings.py
속에. 저는 그안서를 로 결심했습니다. 그리고 나서 저는 만들기로 결심했습니다.Settings folder
東京의 app_folder
그리고 그것은 충돌을 일으켰습니다.settings.py
방금 이름을 변경했습니다.Settings folder
모든 것이 작동했습니다.
저는 제 settings.py 에 있는 라인에 댓글을 달아 위의 문제를 해결했습니다.
SECRET_KEY=os.environ.get('SECRET_KEY')
SECRET_KEY
의 내안선언에 된.~/.bashrc
) 파일(Linux Ubuntu 파일)
로컬 컴퓨터에서 개발 목적으로 evironmnet 변수를 사용하지 않았습니다.
SECRET_KEY = '(i9b4aes#h1)m3h_8jh^duxrdh$4pu8-q5vkba2yf$ptd1lev_'
위 라인은 오류를 제공하지 않았습니다.
저의 경우 Github 작업을 설정하는 동안 yml 파일에 env 변수를 추가하는 것을 잊었습니다.
jobs:
build:
env:
VAR1: 1
VAR2: 5
저의 경우 오랜 검색 끝에 장고 설정(Settings > Languages & Frameworks > Django)의 PyCharm에 구성 파일 필드가 정의되지 않았습니다.이 필드가 프로젝트의 설정 파일을 가리켜야 합니다.그런 다음 Run / Debug 설정을 열고 환경 변수 DJANO_SETTINGS_MODULE = 기존 경로를 제거해야 합니다.
이것은 PyCharm의 Django 플러그인이 프레임워크의 구성을 강제하기 때문에 발생합니다.따라서 os.environment를 구성하는 것은 의미가 없습니다.set default('DJ')ANGO_Settings_MODULE', '내 앱'.설정')
.py 을 으로 가져옵니다.py 가져오기
__init__.py
혼자서. 다시는 같은 구성을 반복하지 않도록 하십시오!variable 경환설정수변설
SET DJANGO_DEVELOPMENT =dev
settings/
__init__.py
base.py
local.py
production.py
__init__.py
from .base import *
if os.environ.get('DJANGO_DEVELOPMENT')=='prod':
from .production import *
else:
from .local import *
base.py
글로벌 구성을 구성했습니다.데이터베이스를 제외하고요.
SECRET_KEY, ALLOWED_HOSTS,INSTALLED_APPS,MIDDLEWARE .. etc....
local.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
저는 같은 문제에 직면해 있기 때문에 답을 찾기 위해 이곳에 왔습니다. 여기 있는 답들 중 어떤 것도 저에게 효과가 없었습니다.그리고 나서 다른 웹사이트를 검색한 후에 저는 이 간단한 해결책을 우연히 발견했습니다.그것은 나에게 효과가 있었다.
wsgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'yourProject.settings')
로.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'yourProject.settings.dev')
저에게 흥미로운 해결책을 알려드리겠습니다!
Settings packages init.py 파일에 SECRET_KEY = "****&^%$#"을 넣었더니 오류가 사라졌습니다! 실제로 로딩 문제입니다!
이 빠른 해결 방법이 여러분 중 일부에게 유용하기를 바랍니다!
장고를 가져온 다음 장고를 실행하십시오.setup(설정)은 secret_key 정의 뒤에 있습니다.이와 같이:
SECRET_KEY = 'it5bs))q6toz-1gwf(+j+f9@rd8%_-0nx)p-2!egr*y1o51=45XXCV'
django.setup()
Wing IDE를 사용하는 모든 사용자: 프로젝트 속성에서 DJANO_SETTINGS_MODULE을 다음과 같이 설정합니다.DJANGO_SETTINGS_MODULE=${DJANGO_SITENAME}.config.settings.development
프로젝트 --> 프로젝트 속성에서 설정을 찾고 환경 필드에서 값을 설정합니다.
(저는 Pycharm을 사용하고 있습니다. 여기에 있는 모든 솔루션을 사용해 봤는데 일부 코드에서는 솔루션이 작동하고 일부 코드에서는 작동하지 않는다는 것을 알게 되어 이 솔루션을 사용했습니다.)
내가 한 가장 쉬운 해결책은 설치된 사이트 패키지가 있는 LIB를 삭제하고 설정에서 파이썬 인터프리터를 연 다음 프로그램(Pycharm)이 pip/site 패키지를 설치하고 나머지 패키지(예: rest_framewrok 등)를 다시 설치하는 옵션을 제공한 것입니다.프로젝트의 가상 환경에서 cmd(또는 명령 프롬프트 도구)를 사용하여 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/19128540/django-improperlyconfigured-the-secret-key-setting-must-not-be-empty
'source' 카테고리의 다른 글
Android 부팅 화면 이미지 크기가 모든 기기에 적합합니다. (0) | 2023.08.10 |
---|---|
마리아의 문자를 사용한 이진 데이터 형식 조합DB (0) | 2023.08.10 |
상수로 채워진 여러 행을 선택하는 방법은 무엇입니까? (0) | 2023.08.10 |
클래스 기반 뷰와 아약스를 사용하는 장고 앱? (0) | 2023.08.10 |
Galera Cluster 및 MaxScale을 사용하여 다중 DB 서버를 사용하여 mariaDB 쿼리를 가속화하는 방법은 무엇입니까? (0) | 2023.08.10 |