Django: अनुचित तरीके से कॉन्फ़िगर किया गया: SECRET_KEY सेटिंग खाली नहीं होनी चाहिए


101

मैं कई सेटिंग फाइलें (विकास, उत्पादन, ..) स्थापित करने की कोशिश कर रहा हूं जिनमें कुछ आधार सेटिंग्स शामिल हैं। हालांकि सफल नहीं हो सकता। जब मैं चलाने की कोशिश कर रहा हूं तो मुझे ./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(जो अन्यथा खाली है), यह जादुई रूप से काम करना शुरू कर देता है, लेकिन मुझे समझ नहीं आता कि क्यों। कोई भी मुझे समझा सकता है कि यहाँ क्या हो रहा है? यह कुछ अजगर मॉड्यूल जादू होना चाहिए।

EDIT: अगर मैं इस लाइन को बेसडोमो से हटाता हूं तो सब कुछ काम करना शुरू कर देता है

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)

तो यह कुछ अजीब परिपत्र सामान और खेल खत्म बनाता है।


वास्तव में, अंत में आपको हमेशा सेटिंग्स की आवश्यकता होगी, भले ही यह django.conf से हो
Guilherme David da Costa

2
अपने DJANGO_SETTINGS_MODULE को सेटिंग में बदलने का प्रयास करें। विकास
Guilherme David da Costa

पर कोशिश crimeminister के जवाब virutalenvwrapper का उपयोग कर किसी को भी stackoverflow.com/questions/10738919/...
lukeaus

जवाबों:


107

मेरे पास एक ही त्रुटि थी और यह सेटिंग्स या सेटिंग्स मॉड्यूल द्वारा लोड किए गए मॉड्यूल या वर्ग के बीच एक परिपत्र निर्भरता के रूप में निकला। मेरे मामले में यह एक मिडलवेयर वर्ग था जिसे सेटिंग्स में नाम दिया गया था जो खुद सेटिंग्स लोड करने की कोशिश करता था।


4
हां, मुझे लगता है कि परिपत्र यह करता है।
क्लेाइम

5
परिपत्र निर्भरता से बचने के लिए रिफ्लेक्टर। सटीक समाधान वास्तव में आपके अपने कोड के लिए काफी विशिष्ट है।
सैम स्वेबजॉर्गिस्ट्रिंसेंसन

6
संकेत: इस बात की पहचान करने के लिए कि समस्या क्या है, उदाहरण के लिए सेटिंग्स फ़ाइल में एक यादृच्छिक प्रिंट स्टेटमेंट जोड़ें और इसे देखने के लिए इसे चारों ओर घुमाएं जहां यह टूट जाता है।
फेलिक्स बॉहम

14
मुझे इसका जवाब नहीं मिला।
अविनाश राज

8
यह उत्तर अधिक उपयोगी होगा यदि यह अधिक विशिष्ट था ... यह कहता है कि समस्या "कुछ" है।
हैक-आर

73

मैं डैनियल ग्रीनफ़ील्ड की पुस्तक टू स्कोप्स ऑफ़ जिंगो के निर्देशों के अनुसार सेटिंग्स के पुनर्गठन के बाद उसी समस्या में भाग गया

मैंने सेटिंग करके समस्या हल की

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings.local")

में manage.pyऔर wsgi.py

अपडेट करें:

उपरोक्त समाधान में, localमेरे सेटिंग्स फ़ोल्डर के अंदर फ़ाइल नाम (सेटिंग्स / लोकल एरोम्ड) है, जो मेरे स्थानीय वातावरण के लिए सेटिंग्स रखता है।

इस समस्या को हल करने का एक अन्य तरीका यह है कि आप अपनी सभी सामान्य सेटिंग्स को सेटिंग / बेस-इन के अंदर रखें और फिर अपने उत्पादन, मंचन और देव वातावरण के लिए 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 *

PythonAnywhere पर वैगेट का उपयोग करने वाले किसी के लिए भी '.dev' जोड़ें। WSGI में इस पंक्ति के अंत में ... os.environ ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings.dev' बाद में आपको अपने पासवर्ड आदि के लिए अपने स्रोत रेपो के बाहर एक लोकलहोम बनाने की आवश्यकता होगी
Inyoka

शीर्ष उत्तर होना चाहिए
Dev

ImportError: स्थानीय कोई भी नाम नहीं है
Tessaracter

@ Tessaracter आपके द्वारा उपयोग की जाने वाली सेटिंग फ़ाइल के नाम का उपयोग करता है local। मेरे मामले में, स्थानीय सेटिंग्स फ़ाइल सेटिंग्स में रखा गया था / local.py
Jinesh

1
यह Django सम्मेलनों का उल्लंघन करता है, DJANGO_SETTINGS_MODULEएक नए कस्टम पर्यावरण चर के साथ ठीक से प्रलेखित है जो बॉक्स से बाहर समर्थित नहीं है और मैन्युअल रूप से निपटा जाना है। मुझे आश्चर्य है कि इसमें इतने उतार-चढ़ाव हैं। मैं इस सेटअप के साथ एक परियोजना पर काम कर रहा हूं और स्थानीय विकास के लिए एक अलग वातावरण को बाहरी पुस्तकालयों को तोड़ने के लिए एक अलग वातावरण को कॉन्फ़िगर करने में कठिनाइयों से, हम बहुत सारी समस्याओं में चल रहे हैं क्योंकि वे उम्मीद के मुताबिक DJANGO_SETTINGS_MODULEकाम करने की उम्मीद करते हैं और यह नहीं करता है।
एरियल

20

मेरे साथ भी यही त्रुटि थी python manage.py runserver

मेरे लिए, यह पता चला कि यह एक बासी संकलित बाइनरी (.pyc) फ़ाइल के कारण था। मेरे प्रोजेक्ट में ऐसी सभी फाइलों को हटाने के बाद, सर्वर फिर से चलने लगा। :)

इसलिए यदि आपको यह त्रुटि मिलती है, तो कहीं से भी, यानी बिना किसी परिवर्तन के django-settings से संबंधित, यह एक अच्छा पहला उपाय हो सकता है।


2
इस टिप के लिए धन्यवाद। मैं अपने देव सर्वर पर एक समान मुद्दा था। प्रोजेक्ट फ़ोल्डर से सभी .pyc फ़ाइलों को हटाने ने चाल चली। मैं ऐसा करने से पहले सेटिंग्स फ़ाइल को संपादित कर रहा था।
क्रोक

15

.Pyc फ़ाइलें निकालें

हटाने के लिए Ubuntu टर्मिनल कमांड .pyc: find . -name "*.pyc" -exec rm -rf {} \;

मुझे वही त्रुटि मिली है जब मैंने python manage.py runserver को किया था। इसकी वजह थी .pyc फाइल। मैंने प्रॉजेक्ट डायरेक्टरी से .pyc फाइल को डिलीट किया तब यह काम कर रही थी।


2
find . -type f -name *.pyc -deleteकरेंगे
श्रीनिवास रेड्डी थातीपर्थी

8

मैंने सेटिंग फ़ाइल निर्दिष्ट नहीं की:

python manage.py runserver --settings=my_project.settings.develop

6

यह काम करना शुरू कर देता है क्योंकि आधारभूत आधार पर आपके पास मूल सेटिंग फ़ाइल में आवश्यक सभी जानकारी होती है। आपको पंक्ति की आवश्यकता है:

SECRET_KEY = '8lu*6g0lg)9z!ba+a$ehk)xt)x%rxgb$i1&amp;022shmi1jcgihb*'

तो यह काम करता है और जब आप करते हैं from base import *, तो यह SECRET_KEY को आपके में आयात करता है development.py

किसी भी कस्टम सेटिंग को करने से पहले आपको हमेशा बुनियादी सेटिंग्स आयात करनी चाहिए।


EDIT: इसके अलावा, जब django आपके पैकेज से विकास आयात करता है, तो यह आपके अंदर परिभाषित किए जाने के बाद से बेस के अंदर सभी चर को इनिशियलाइज़ करता from base import *है__init__.py


क्षमा करें, मुझे आपकी बात ठीक नहीं लगी। विकास की शुरुआत में आधार आयात * से था और यह काम नहीं किया।
क्लिमेट

ओह क्षमा करें, मैं वास्तव में क्या हो रहा था की परवाह किए बिना कूद गया। Django अभी भी आपके डेवलपमेंटहोम के बजाय सेटिंग्स से सेटिंग्स आयात करने की कोशिश कर रहा है क्योंकि यह काम करने का कारण लगता है जब आप init .py पर बेस आयात करते हैं
Guilherme David da Costa

5

मुझे लगता है कि यह पर्यावरण की त्रुटि है , आपको सेटिंग का प्रयास करना चाहिए:DJANGO_SETTINGS_MODULE='correctly_settings'


4

मुझे सेलेरी के साथ भी यही समस्या थी। मेरी सेटिंग पहले :

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')

उपरांत:

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', <YOUR developing key>)

यदि पर्यावरण चर को परिभाषित नहीं किया गया है: SECRET_KEY = आपकी विकासशील कुंजी


4

सेटिंग निर्देशिका के init .py में सही आयात लिखें, जैसे:

from Project.settings.base import *

Wsgi.py या manage.py को बदलने की आवश्यकता नहीं है


उत्तम! धन्यवाद।
मयूर

2

मैंने OS X पर होने वाली इस समस्या को Django के साथ 1.5 और 1.6 दोनों के साथ सभी सक्रिय सत्रों को virtualenv को निष्क्रिय करके और इसे फिर से शुरू करके हल किया।


2

PyCharm का उपयोग करने वाले किसी भी व्यक्ति के लिए: हरा "रन चयनित कॉन्फ़िगरेशन" बटन इस त्रुटि का उत्पादन करेगा, फिर भी निम्नलिखित काम चला रहा है:

py manage.py runserver 127.0.0.1:8000 --settings=app_name.settings.development

इसे ठीक करने के लिए आपको कॉन्फ़िगरेशन के पर्यावरण चर को संपादित करने की आवश्यकता है। ऐसा करने के लिए "रन / डिबग कॉन्फ़िगरेशन चुनें" ड्रॉप-डाउन मेनू को हरी रन बटन के बाईं ओर क्लिक करें और फिर "कॉन्फ़िगरेशन कॉन्फ़िगरेशन" पर क्लिक करें। "पर्यावरण" टैब के तहत पर्यावरण चर DJANGO_SETTINGS_MODULEको बदल दें app_name.settings.development


1

मैं बस यह जोड़ना चाहता था कि मुझे यह त्रुटि तब मिली जब मेरे डेटाबेस का नाम मेरी settings.pyफ़ाइल में गलत लिखा गया था इसलिए DB नहीं बनाया जा सका।


1

मैंने TEMPLATES सेटिंग को ठीक करके 1.8.4 पर इस समस्या को हल किया, जिसमें एक टाइपो था (TEMPLATES को हटाकर ['डीबग'] इसे हल किया)

उन सेटिंग्स पर जाएं, जिन्हें आपने हाल ही में बदला है, सुनिश्चित करें कि सभी कुंजियाँ पुस्तक के अनुसार हैं।


1

मिश्रण में एक और संभावित समाधान फेंकने के लिए, मेरे पास एक settingsफ़ोल्डर और साथ ही एक थाsettings.py मेरी परियोजना में भी थी। (मैं पर्यावरण-आधारित सेटिंग्स फ़ाइलों से वापस एक फ़ाइल पर स्विच कर रहा था। मेरे पास पुनर्विचार के बाद से है।)

अजगर इस बात को लेकर भ्रमित हो रहा था कि मैं आयात करना चाहता हूं project/settings.pyया नहीं project/settings/__init__.py। मैंने settingsडायर को हटा दिया और अब सब कुछ ठीक काम करता है।


0

मैंने =अपनी .envफ़ाइल में समान संकेतों ( ) के आस-पास के रिक्त स्थान को हटाकर इस समस्या को हल किया ।


0

मेरे मामले में समस्या यह थी - मेरे पास app_folderऔर settings.pyइसमें था। फिर मैंने Settings folderअंदर बनाने का फैसला किया app_folder- और इससे टकराव हुआ settings.py। बस नाम बदल दिया Settings folder- और सब कुछ काम किया।


0

मेरा मैक ओएस पसंद नहीं आया कि यह सेटिंग फ़ाइल में एनवी चर सेट नहीं मिला:

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('MY_SERVER_ENV_VAR_NAME')

लेकिन मेरे स्थानीय मैक ओएस देव वातावरण में env var जोड़ने के बाद, त्रुटि गायब हो गई:

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 एक फाइल है जो सेटिंग्स फ़ोल्डर के अंदर उत्पादन विशिष्ट सेटिंग्स रखता है।


0

मेरे लिए मुद्दा 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अपवाद को हल किया ।


0

मैंने अपनी सेटिंग्स में लाइन टिप्पणी करके उपरोक्त समस्या को हल किया

SECRET_KEY=os.environ.get('SECRET_KEY')

SECRET_KEYमेरी ~/.bashrcफाइल में घोषित (linux Ubuntu उपयोगकर्ताओं के लिए)

अपने लोकमंच पर विकास के उद्देश्य के लिए मैंने evironmnet चर का उपयोग नहीं किया

SECRET_KEY = '(i9b4aes#h1)m3h_8jh^duxrdh$4pu8-q5vkba2yf$ptd1lev_'

उपरोक्त पंक्ति ने त्रुटि नहीं दी


0

मेरे मामले में, जीथब एक्शन स्थापित करते समय मैं सिर्फ yml फ़ाइल में एनवी चर जोड़ना भूल गया:

jobs:
  build:
    env:
     VAR1: 1
     VAR2: 5

0

कारण इतने सारे अलग-अलग उत्तर हैं क्योंकि अपवाद का SECRET_KEY से कोई लेना-देना नहीं है। यह शायद एक पूर्व अपवाद है जिसे निगला जा रहा है। वास्तविक अपवाद को देखने के लिए DEBUG = True का उपयोग करके डिबगिंग चालू करें।


0

मेरे मामले में, एक लंबी खोज के बाद मैंने पाया कि आपके Django सेटिंग्स (सेटिंग्स> भाषा और फ्रेमवर्क> Django) में PyCharm का कॉन्फ़िगरेशन फ़ाइल क्षेत्र अपरिभाषित था। आपको इस फ़ील्ड को अपनी परियोजना की सेटिंग फ़ाइल में बनाना चाहिए। उसके बाद, आपको रन / डीबग सेटिंग्स को खोलना होगा और पर्यावरण चर DJANGO_SETTINGS_MODULE = मौजूदा पथ को निकालना होगा।

ऐसा इसलिए होता है क्योंकि PyCharm में Django प्लगइन फ्रेमवर्क के कॉन्फ़िगरेशन को मजबूर करता है। इसलिए किसी भी os.environ.setdefault ('DJANGO_SETTINGS_MODULE', 'myapp.settings') को कॉन्फ़िगर करने का कोई मतलब नहीं है


0

में बेसकंम आयात करें __init__.py अकेले । सुनिश्चित करें कि आप उसी कॉन्फ़िगरेशन को फिर से नहीं दोहराएंगे!

पर्यावरण चर सेट करें 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',
}
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.