DEBUG सेट करना = गलत 500 त्रुटि का कारण बनता है


298

एक बार मैं बदल DEBUG = False, मेरी साइट 500 (WSGI और manage.py runserver का प्रयोग करके) उत्पन्न होगा, और वहाँ अपाचे त्रुटि लॉग में कोई त्रुटि की जानकारी है और यह सामान्य रूप से चलेगा जब मैं बदलने debugके लिए True

मैं Django 1.5 और पायथन 2.7.3 का उपयोग कर रहा हूं, यहां अपाचे एक्सेस लॉग है और बिना किसी अपाचे त्रुटि लॉग के

www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET / HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /favicon.ico HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /favicon.ico HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"

यहाँ मेरी सेटिंग फ़ाइल है:

import os.path    
DEBUG = False 
#TEMPLATE_DEBUG = DEBUG

HERE = os.path.dirname(__file__)
ADMINS = (
    ('admin', 'xyzadmin@qq.com'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'zdm',                      # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': 'passwd',                  # 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 = 'America/Chicago'

# 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 = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# 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 = ''

# 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 = ''

# 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 = os.path.join(HERE, 'static').replace('\\','/')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(HERE, 'static').replace('\\','/')
S= os.path.join(HERE, 'static').replace('\\','/')

# 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.
    '/home/zdm/static',
)

# 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 = '9a7!^gp8ojyk-^^d@*whuw!0rml+r+uaie4ur$(do9zz_6!hy0'

# 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',
)

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',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'zdm.urls'

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'zdm.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.
    '/home/zdm/templates',
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'zdm',
    'portal',
    'admin',
    'tagging',
)

हां, मैंने अपने टेम्प्लेट में 403 और 404 500 html फाइल जोड़ दी है dir
zhiguo.wang

क्या आपके पास जगह में 500.html और 404.html और 403.html फाइलें हैं? मुझे लगता है कि मुझे एक तैनात परियोजना के साथ एक मुद्दा याद है जिसमें मेरे टेम्पलेट निर्देशिका की जड़ में वे फाइलें नहीं थीं।
निबंध

यदि आपकी साइट 500 त्रुटि उत्पन्न कर रही है, तो अपाचे लॉग में कुछ जानकारी होनी चाहिए, आप लोगों को देखने के लिए त्रुटि लॉग फ़ाइल के अंत का एक हिस्सा चिपकाना चाह सकते हैं।
निबंध

87
आप अपना SECRET_KEY अब सार्वजनिक रूप से उपलब्ध होने के लिए बदलना चाहते हैं ...
Fraxtil

1
यह सभी के लिए जवाब नहीं है। जैसा कि नीचे stackoverflow.com/a/37218484/4028977 में दिखाया गया है , कई कारण हो सकते हैं कि ऐसा क्यों हो रहा है। कुछ सरल लॉगिंग के साथ आप बिना अनुमान के पता लगा सकते हैं।
राब

जवाबों:


413

Django 1.5 ने सुरक्षा कारणों से आवश्यक होस्ट सेटिंग की शुरुआत की । Django 1.5 के साथ बनाई गई एक सेटिंग फ़ाइल में यह नया अनुभाग है जिसे आपको जोड़ने की आवश्यकता है:

# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.9/ref/settings/#allowed-hosts
ALLOWED_HOSTS = []

अपने मेजबान को यहां जोड़ें ['www.beta800.net']या ['*']त्वरित परीक्षण के लिए, लेकिन ['*']उत्पादन के लिए उपयोग न करें


32
वाह - यह हमें मुश्किल है। यह वास्तव में बेकार है कि यह सेटिंग डॉक्स में दफन है। हमारी उत्पादन साइट DEBUG = गलत के साथ काम नहीं करेगी। इस बारे में बताने के लिए शुक्रिया!!!
श्रेडड

4
इस सेटिंग को पेश करने वाले सुरक्षा मुद्दों पर अधिक: प्रैक्टिकल HTTP होस्ट हेडर हमले['*']उत्पादन में उपयोग नहीं करने के लिए निश्चित रूप से मना लेंगे ।
gertvdijk

4
बीएल। कष्टप्रद है कि वे इसे सेटिंग्स में डिफ़ॉल्ट मान के रूप में भी नहीं चिपकाते हैं, शायद एक विस्तारक टिप्पणी के साथ ...
hwjp

7
कभी-कभी मुझे आश्चर्य होता है कि Django क्यों मंदबुद्धि होता जा रहा है! निश्चित रूप से वे लोग मुझसे बहुत बेहतर प्रोग्रामर हैं, लेकिन मैं वास्तव में एप्लिकेशन स्तर पर कमजोरियों को "ठीक" करने के निर्णय को नहीं समझता, जब सर्वर को सही तरीके से कॉन्फ़िगर करने के लिए वास्तविक और स्वच्छ चाल होगी। एक ही "टेम्पलेट कैशिंग" और "लगातार कनेक्शन" के लिए जाता है ... बेकार कोड जो कभी भी एक गंभीर वेबसाइट में उपयोग नहीं किया जाएगा; अभी भी प्रोग्रामिंग की पवित्र कब्र के रूप में प्रस्तुत किया गया है! शायद सिर्फ मैं ही हूँ, मैं पहले भी गलत हूँ!
स्टीफन नच

3
कोई बात नहीं, समस्या मिली। यह django-pipelineतब व्यवहार से संबंधित था जब स्थैतिक अभी तक एकत्र नहीं किया गया है। एक सामान्य टिप के रूप में, Django की handle_uncaught_exceptionविधि में एक ब्रेकपॉइंट रखने से आपको यह पता लगाने में मदद मिलेगी कि यहां क्या चल रहा है।
पीटर

51

मुझे पता है कि यह देर हो चुकी है, लेकिन मैं अपनी त्रुटि 500 ​​की खोज के साथ यहां समाप्त हुआ DEBUG=False, मेरे मामले में यह निकला, ALLOWED_HOSTSलेकिन मैं os.environ.get('variable')मेजबान को आबाद करने के लिए उपयोग कर रहा था , मैंने इस पर ध्यान नहीं दिया जब तक कि मैं लॉगिंग सक्षम नहीं करता, आप कर सकते हैं नीचे के साथ फाइल करने के लिए सभी त्रुटियों को लॉग इन करें और यह तब भी लॉग इन करेगा DEBUG=False:

# settings.py
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'mysite.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers':['file'],
            'propagate': True,
            'level':'DEBUG',
        },
        'MYAPP': {
            'handlers': ['file'],
            'level': 'DEBUG',
        },
    }
}

16
यह स्वीकृत उत्तर होना चाहिए। यह अनुमान लगाने की कोशिश करने के बजाय, उत्पादन सेटिंग्स का उपयोग करने के बाद क्या गलत है, यह केवल फ्रेमवर्क से पूछना अधिक उपयोगी है।
स्टीफन ड्रैगनेव

4
वास्तव में, यह अंधेरे के बारे में घूमने के लिए कुछ नहीं है। बस उस त्रुटि संदेश को देखें जिसे आप सामान्य रूप से इस पद्धति का उपयोग करते हुए देखेंगे। मेरे मामले में, मुझे अपनी सेटिंग में एक अलग सेटिंग याद आ रही थी जो मेरा ऐप खोज रहा था। मुझे इसकी आवश्यकता थी कि यह नीचे ट्रैक करने के लिए लॉग हो। एक महत्वपूर्ण नोट: मैं जोड़ा / path / to / मेरी / Django / 'mysite.log' के रूप में डॉक्स उदाहरण में दिखाया गया से पहले: docs.djangoproject.com/en/1.10/topics/logging/#examples
रोब

4
मैंने घंटों समाधान की तलाश में बिताए हैं, कोई फायदा नहीं। इस उत्तर के अनुसार बस लॉगिंग का उपयोग करें और आपको अपनी समस्या होनी चाहिए, यह सबसे अच्छा उत्तर है। धन्यवाद ओपी!
स्टैक

मेरी सर्वर त्रुटियाँ किसी भी लॉग का उत्पादन नहीं लगती हैं! मैंने विभिन्न लॉगिंग को बिना किसी लाभ के कॉन्फ़िगर करने की कोशिश की है। कोई विचार?
कैममिल

5
धन्यवाद! इससे मेरी त्रुटि हल हो गई। एक पैकेज से कुछ स्थिर संपत्ति इकट्ठा करने के लिए मुझे सामूहिक रूप से चलाने की आवश्यकता है।
उन

33

मैं अभी हाल ही में Django 2.0 में एक ही मुद्दे का सामना करना पड़ा। मैं सेटिंग करके समस्या का पता लगाने में सक्षम था DEBUG_PROPAGATE_EXCEPTIONS = True। यहां देखें: https://docs.djangoproject.com/en/2.0/ref/settings/#debug-propagate-exception

मेरे मामले में, त्रुटि थी ValueError: Missing staticfiles manifest entry for 'admin/css/base.css'। मैंने तय किया कि स्थानीय रूप से चल रहा है python manage.py collectstatic


मैं एक ही बात पर जाता हूं लेकिन सामूहिकता ने इसे मेरे लिए ठीक नहीं किया। क्या आपको "त्रुटि तक नहीं पहुँचा जा सकता" मिला? उस मामले में, आपने इसे कैसे ठीक किया?
कवि वैद्य

23

मेरे मामले में, थर्ड पार्टी ऐप्स के डॉक्स पढ़ने से मुझे ठीक से बचाया गया।

अपराधी? django_compressor

मैं था

{% load compress %}
{% compress css %}
 ... css files linked here ..
{% endcompress %}

DEBUG = True हमेशा मुझे 500 दिया। इसे ठीक करने के लिए, मुझे इसे चलाने के लिए अपनी सेटिंग्स में एक पंक्ति की आवश्यकता थी

COMPRESS_ENABLED = os.environ.get('COMPRESS_ENABLED', False)

धन्यवाद, यही कारण था कि यह मेरे लिए काम नहीं करता था, लेकिन क्या यह लाइन अपने काम को करने से django_compressor को अक्षम नहीं करती है?
फ़ैनकुश

1
@Fanckush नोप। कोई नुकसान नहीं हुआ है। django-compressor.readthedocs.io/en/latest/settings/… कंप्रेसर अभी भी पूरी तरह से अपना काम कर रहा होगा! बस अपने सभी स्टेटिक्स (जैसे सीएसएस) को संपीड़ित करें, ताकि सेटिंग इस प्रकार बेकार हो जाए क्योंकि आपकी संपत्तियां पहले से ही संपीड़ित हैं
खोई

13

Django 1.5 में, यदि DEBUG = गलत है, तो ALLOWED_HOSTS कॉन्फ़िगर करें, पोर्ट संख्या के बिना डोमेन जोड़ रहा है। उदाहरण:

ALLOWED_HOSTS = ['localhost']

जो भी कारण हो, 'लोकलहोस्ट' का इस्तेमाल करना मेरे लिए कारगर नहीं रहा। मुझे इसके बजाय IP '127.0.0.1' का उपयोग करना पड़ा। मैं भी '*' का उपयोग करने में सक्षम था यदि आप बाहर जा रहे हैं और बस इसे काम करना चाहते हैं। मैं हालांकि उत्पादन में ऐसा करने की सलाह नहीं दूंगा। OSX रनिंग Django 1.4.20
ब्लेकपेटर्सन

11

आपको अपने URL को सभी जगह देखना होगा। जब DEBUGसेट किया जाता है False, तो बिना अनुगामी सभी URL को /बग के रूप में माना जाता है, जब आपके पास होता है DEBUG = True, तो उस स्थिति में जब Django /हर जगह गायब हो जाता है , तो उसे जोड़ देगा । तो, संक्षेप में, सुनिश्चित करें कि सभी लिंक एक स्लैश हर के साथ समाप्त होते हैं।


3
बस रिवर्स और यूआरएल टैग का उपयोग करें और आप ठीक होना चाहिए
maazza

सेटिंग DEBUG=Falseआयात त्रुटियों का भी अनावरण कर सकती है: stackoverflow.com/questions/25676453/…
Ecoe

यहां तक ​​कि जेएस और सीएसएस परिसंपत्तियों के लिए लिंक?
14

@ amchugh89: नहीं, सिर्फ "django" URL
webzy

1
मेरा मुद्दा यह है कि व्हाइटेनोइस कुछ छवि नहीं पा रहा था और ValueError फेंक रहा था। मैं यह भी नहीं ढूँढ सका, लेकिन पता नहीं कैसे व्हाइटेनोइस को देखने के लिए नहीं बताया। इसलिए मैंने व्हाइटनोइज़ को बंद कर दिया, django static सेवा का उपयोग किया और अब मैं produg = ठेस को ठेस में चला सकता हूं। स्पष्ट रूप से आदर्श नहीं :(
अमचूगॉह

7

मेरे पास सभी के लिए एक उल्लसित कहानी है। इस पृष्ठ पर पहुँचने के बाद मैंने कहा "यूरेका! मैं बच गया हूँ। यह मेरी समस्या होगी।" इसलिए मैंने ALLOWED_HOSTSसेटिंग सूची में आवश्यक सूची सम्मिलित की और ... कुछ भी नहीं। वही पुरानी 500 त्रुटि। और नहीं, यह 404.html फ़ाइल की कमी के लिए नहीं था।

इसलिए 2 दिनों के लिए मैंने अपने आप को जंगली सिद्धांतों के साथ व्यस्त कर लिया, जैसे कि उसे स्थैतिक फ़ाइलों की सेवा के साथ कुछ करना था (यह समझें कि मैं एक नॉब हूं और नॉब्स को पता नहीं है कि वे क्या कर रहे हैं)।

तो क्या था? यह अब मिस्टर मॉडरेटर है कि हम एक उपयोगी टिप पर आते हैं। जबकि मेरा विकास Django संस्करण 1.5.something है, मेरा उत्पादन सर्वर संस्करण 1.5.something + 1 है ... या शायद प्लस 2. जो भी हो। और इसलिए जब मैंने settings.pyALLOWED_HOSTS के डेस्कटॉप संस्करण को जोड़ा , जिसमें hwjp की कमी थी, तो --- "सेटिंग में डिफ़ॉल्ट मान, शायद एक व्याख्यात्मक टिप्पणी के साथ" --- मैंने प्रोडक्शन सर्वर पर भी ऐसा ही किया इसके लिए उचित डोमेन।

लेकिन मैं यह नोटिस करने में विफल रहा कि Django के बाद के संस्करण के साथ उत्पादन सर्वर पर एक स्पष्ट टिप्पणी के साथ settings.py में एक डिफ़ॉल्ट मान था। यह अच्छी तरह से नीचे था जहां मैंने अपनी प्रविष्टि बनाई, मॉनिटर पर दृष्टि से बाहर। और निश्चित रूप से सूची खाली थी। इसलिए समय की मेरी बर्बादी।


1
मैं बिल्कुल वैसा ही प्रफुल्लित करने वाला पैटर्न था!, सिवाय इसके कि यह प्रफुल्लित होने के बाद ही मुझे मिला, धन्यवाद। इससे पहले यह सिर्फ सादा निराशा थी
Binithb

कुछ ऐसा है जो इस सब में मदद करता है local_settings.pyप्रत्येक पर्यावरण के लिए उपयोग करें और फिर इसे आयात करें settings.py
निकरेलियस

1
मुझे क्या करना पसंद है, इसमें सेटिंग्स के बजाय एक सेटिंग्स / निर्देशिका है । इस निर्देशिका में, आपके पास अलग-अलग वातावरणों के लिए अलग .py फाइलें और सामान्य सेटिंग्स के लिए एक आधार-पत्र हो सकता है। उत्पादन निर्भर सेटिंग्स तब आधार सेटिंग्स से * आयात करके शुरू कर सकती हैं, और जो कुछ भी उन्हें ओवरराइड करने की आवश्यकता है, उसे ओवरराइड करें। इसके अलावा, आवश्यक init .py को उस सेटिंग / निर्देशिका को एक वैध मॉड्यूल में बदलने की आवश्यकता है, जो पहले बेसडोमो से आयात कर सकता है, और फिर एक स्थानीय थिंकपैड (जो केवल स्थानीय रूप से मौजूद होगा) से आयात करने का प्रयास करेगा। इसका मतलब है कि आपको स्थानीय सेटिंग्स को मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता नहीं है
mephisto

7

मुख्य उत्तर
को लागू करना settings.pyविकास और उत्पादन के बीच स्विच करते समय ALLOWED_HOSTS और DEBUG वैश्विक स्थिरांक को बदलना कष्टप्रद है । इन सेटिंग को स्वचालित रूप से सेट करने के लिए मैं इस कोड का उपयोग कर रहा हूं:

import socket

if socket.gethostname() == "server_name":
    DEBUG = False
    ALLOWED_HOSTS = [".your_domain_name.com",]
    ...
else:
    DEBUG = True
    ALLOWED_HOSTS = ["localhost", "127.0.0.1",]
    ...

यदि आप macOS का उपयोग करते हैं तो आप एक अधिक सामान्य कोड लिख सकते हैं:

if socket.gethostname().endswith(".local"): # True in your local computer
    DEBUG = True
    ALLOWED_HOSTS = ["localhost", "127.0.0.1",]
else:
    ...

6

इसके लायक क्या है - मुझे DEBUG = Falseकेवल कुछ पृष्ठों पर 500 मिल रहे थे । पीडीबी के साथ अपवाद को वापस लेने से एक लापता संपत्ति का पता चला (मुझे संदेह है कि {% static ... %}टेम्पलेट टैग 500 के लिए अपराधी था।


1
यह मेरा मुद्दा यह भी था, कि बेस 404 पेज का कस्टम टेम्पलेट स्थैतिक टैग का उपयोग कर रहा था, लेकिन शीर्ष पर {% भार स्थिर%} शामिल नहीं था। मैंने इसे कहीं और नोटिस नहीं किया क्योंकि मेरे अन्य टेम्प्लेट में यह लाइन थी, लेकिन इसे किसी भी तरह से बेस में डालने के लिए समझ में आता है क्योंकि यह सभी जगह स्थिर फाइलों को संदर्भित करता है।
क्रिश्चन

2
यहाँ एक ही समाधान - मैं staticएक सीएसएस फ़ाइल शामिल करने के लिए उपयोग कर रहा था जो मौजूद नहीं था।
फिल गिफोर्ड

5

जब मैंने किया तो मुझे उसी समस्या का सामना करना पड़ा DEBUG = FALSE । यहाँ एक समेकित समाधान है जैसा कि ऊपर और अन्य पदों के उत्तर में बिखरा हुआ है।

डिफ़ॉल्ट रूप से, सेटिंग्स में हमारे पास है ALLOWED_HOSTS = []ALLOWED_HOSTSत्रुटि से छुटकारा पाने के लिए परिदृश्य के अनुसार आपको संभावित परिवर्तन करने होंगे :

1: आपका डोमेन नाम:

ALLOWED_HOSTS = ['www.example.com'] # Your domain name here

2: यदि आपका डोमेन नाम अभी तक नहीं है तो आपका तैनात सर्वर आईपी (जो मेरा मामला था और एक आकर्षण की तरह काम करता है):

ALLOWED_HOSTS = ['123.123.198.123'] # Enter your IP here

3: यदि आप स्थानीय सर्वर पर परीक्षण कर रहे हैं, तो आप अपना settings.pyया settings_local.pyजैसा संपादित कर सकते हैं :

ALLOWED_HOSTS = ['localhost', '127.0.0.1']

4: आप ALLOWED_HOSTSमूल्य में '*' भी प्रदान कर सकते हैं लेकिन सुरक्षा कारणों से उत्पादन वातावरण में इसकी अनुशंसा नहीं की जाती है :

ALLOWED_HOSTS = ['*'] # Not recommended in production environment

मैंने अपने ब्लॉग पर एक विस्तृत समाधान भी पोस्ट किया है जिसे आप संदर्भित करना चाहते हैं।


5

ALLOWED_HOSTS एकमात्र मुद्दा नहीं है, मेरे लिए मुझे एक 404.html बनाना था और इसे अपने टेम्प्लेट के आधार स्तर में रखा था (ऐप स्तर नहीं) - इसके अलावा, आप एक 404 दृश्य बना सकते हैं और एक 404handler url जोड़ सकते हैं, लेकिन मुझे लगता है कि thats वैकल्पिक। 404.html इसे तय किया

mainproject.urls में

handler404 = 'app.views.custom_404'

app.views में

def custom_404(request):
    return render(request, '404.html', {}, status=404)

फिर एक टेम्प्लेट / 404.html टेम्प्लेट बनाएं

यह एक अन्य एस / ओ पोस्ट से मिला है जो मुझे नहीं मिल रहा है

संपादित करें

इसके अलावा, जब मुझे वाइटेनोइस के साथ संपत्तियां मिलती हैं, तो मुझे 500 त्रुटियां मिलती हैं। मेरे जीवन के लिए यह पता नहीं लगा सका, कि व्हाइटइनोइज़ से एरर वैल्यू थी। एक ऐसी संपत्ति नहीं मिल पा रही थी, जिसे मैं भी नहीं पा सकता था, उसे अभी के लिए सेवारत डिफ़ॉल्ट django के साथ जाना था


8
मुझे वाइटनेस के साथ भी यही समस्या थी। python manage.py collectstaticठीक कर दिया।
यूजीन पखोमोव

1
@ amchungh89 आप एक जीवन रक्षक हैं! कि बाहर इशारा करने के लिए Thanx।
दीपक शर्मा

5

मैं इस मुद्दे के बारे में अधिक खोज और परीक्षण कर रहा था और मैंने महसूस किया कि सेटिंग्स में निर्दिष्ट स्टैटिक फाइलें निर्देशिकाएं इसका एक कारण हो सकती हैं, इसलिए मुट्ठी, हमें इस आदेश को चलाने की आवश्यकता है

python manage.py collectstatic

सेटिंग्स में, कोड को कुछ इस तरह दिखना चाहिए:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

3

मुझे पता है कि यह एक सुपर पुराना सवाल है, लेकिन शायद मैं किसी और की मदद कर सकता हूं। यदि आपको DEBUG = गलत सेट करने के बाद 500 त्रुटि हो रही है, तो आप किसी भी त्रुटि त्रुटि को देखने के लिए कमांड लाइन में हमेशा मैनेजमेस्टो रनरोवर चला सकते हैं जो किसी भी वेब त्रुटि लॉग में दिखाई नहीं देंगे।


2

2019 के मध्य में और मुझे Django के साथ विकसित होने के कुछ वर्षों के बाद इस त्रुटि का सामना करना पड़ा। मुझे पूरी रात के लिए चकित कर दिया! इसे होस्ट करने की अनुमति नहीं थी (जिसे 400 फेंकना चाहिए), बाकी सब कुछ बाहर की जाँच की, आखिरकार कुछ त्रुटि लॉगिंग केवल यह पता लगाने के लिए कि कुछ लापता / या स्टैटिक फ़ाइलों के प्रकट होने (गड़बड़ करने के बाद) सेटअप के साथ खराब हो गए थे। लंबी कहानी छोटी है, जो स्टम्प्ड हैं और SO HAPPEN हैं, जो WHITENOISE या DJANGO STATICFILE BACEND का CACHE के साथ उपयोग कर रहे हैं (स्टैटिक फाइलें प्रकट करें), शायद यह आपके लिए है।

  1. सुनिश्चित करें कि आप सब कुछ सेटअप कर लें (जैसा कि मैंने वाइटेनोइस बैकएंड के लिए किया था ... django बैकेंड फिर भी पढ़ता है) http://whitenoise.evans.io/en/stable/django.html

  2. यदि त्रुटि कोड 500 अभी भी आपको नीचे गोली मारता है, तो अपनी सेटिंग्स पर ध्यान दें ।STATICFILES_STORAGE।

इसे या तो सेट करें (संपीड़न के साथ व्हाइटेनोइस बैकेंड के लिए)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

या (django default के रूप में छोड़ें)

STATICFILES_STORAGE = django.contrib.staticfiles.storage.StaticFilesStorage

सब सब में, इस तथ्य से प्रतीत होता है कि यह श्वेतकेतु कैश + संपीड़न बैकएंड -> है

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

या django के अपने कैशिंग बैकेंड ->

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'

... मेरे लिए बहुत अच्छा काम नहीं किया, क्योंकि मेरी सीएसएस कुछ अन्य स्रोतों का उल्लेख कर रही थी, जो सामूहिक / बैकएंड कोचिंग के दौरान मिश्रित हो सकते हैं। यह समस्या संभावित रूप से http://whitenoise.evans.io/en/stable/django.html#storage-troubleshoot में भी उजागर हुई है


1

मुझे लगता है कि यह http सर्वर सेटिंग्स भी हो सकती है। मेरा अभी भी टूटा हुआ है और पूरे समय ALLOWED_HOSTS था। मैं इसे स्थानीय रूप से एक्सेस कर सकता हूं (मैं gunicorn का उपयोग करता हूं), लेकिन डोमेन नाम के माध्यम से नहीं जब DEBUG = गलत। जब मैं डोमेन नाम का उपयोग करने की कोशिश करता हूं तो यह मुझे त्रुटि देता है, इसलिए मुझे लगता है कि यह एक nginx संबंधित मुद्दा है।

यहाँ nginx के लिए मेरी गोपनीय फ़ाइल है:

server {
    listen   80;
    server_name localhost myproject.ca www.myproject.ca;
    root /var/web/myproject/deli_cms;

    # serve directly - analogous for static/staticfiles
    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /var/web/myproject/lib/python2.6/site-packages/django/contrib;
    }
    location /static/ {
    alias /var/web/myproject/deli_cms/static_root/;
    }

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
    # what to serve if upstream is not available or crashes
    error_page 500 502 503 504 /media/50x.html;
}

मेरी gunicorn कॉन्फिग फ़ाइल निम्नानुसार है: #! / bin / bash cd / var / web / delicms_env / डाइनिंग / सोर्स ../bin/activate exec gunicorn --workers = 3 डेली_केम्सगि: एप्लीकेशन
user2868304

मेरी समस्या अब हल हो गई है, मैं gunicorn_django स्क्रिप्ट का उपयोग कर रहा था और यह मुझे पदावनत संदेश दे रहा था। फिर भी यह निश्चित नहीं है कि यह स्थानीय रूप से क्यों काम करता है, मेरे नगीनेक्स कॉन्फिगर को नहीं बदला, सिर्फ पुराने लिपि को बदलकर गुंकोर्न का उपयोग किया और wsgi का उपयोग किया: अनुप्रयोग मॉड्यूल इसके बजाय और यह फिर से काम करता है। गुनिकॉर्न इससे पहले भी कुछ पदावनत संदेश फेंक रहे थे लेकिन मेरे मुद्दे के लिए कुछ खास नहीं था।
user2868304

1

मेरे पास समान मुद्दा है, मेरे मामले में यह बॉडी टैग के अंदर एक टिप्पणी स्क्रिप्ट होने के कारण हुआ था।

<!--<script>  </script>-->

1

मैं इस मुद्दे में भाग गया। का उपयोग करते हुए, मैं टेम्पलेट में शामिल थाstatic टेम्पलेट टैग , एक फ़ाइल जो अब मौजूद नहीं थी। लॉग में एक नज़र ने मुझे समस्या दिखाई।

मुझे लगता है कि इस तरह की त्रुटि के कई संभावित कारणों में से एक है।

कहानी का नैतिक: हमेशा लॉग त्रुटियों और हमेशा लॉग की जाँच करें।


1

@Squarebear के लिए धन्यवाद, लॉग फ़ाइल में, मुझे त्रुटि मिली ValueError: The file 'myapp/styles.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage ...>:।

मुझे अपने django ऐप में कुछ समस्याएं थीं। मैंने उस लाइन को हटा दिया
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'जो मुझे हेरोकू के दस्तावेज से मिली थी।

मैं भी (करने के लिए धन्यवाद अतिरिक्त निर्देशिका जोड़ने के लिए किया था एक और तो जवाब ) staticके रूप में Django आवेदन के रूट मेंmyapp/static मैं इसे प्रयोग नहीं किया गया था, भले ही। फिर python manage.py collectstaticसर्वर चलाने से पहले कमांड चलाने से समस्या हल हो गई। अंत में, यह ठीक काम करने लगा।


यह मूल प्रश्न का उत्तर कैसे देता है?
निक

1

मुझे डिबग के लिए 500 मिलना शुरू हुआ = के रूप में गलत

django.urls.exceptions.NoReverseMatch: Reverse for 'home' not found.
or...
django.urls.exceptions.NoReverseMatch: Reverse for 'about' not found.

जब उठाने के बजाय django.core.exception.ValidationError बढ़ा रहे हैं rest_framework.serializers.ValidationError बढ़ाएँ

निष्पक्ष होने के लिए, यह पहले से ही एक 500 से ऊपर उठा रहा था, लेकिन एक बहस के रूप में, डीबग = गलत के साथ, यह NoReverseMatch में बदल गया।


1

यह शायद किसी और की मदद करता है, मेरे मामले में लापता फ़ेविकॉन के साथ समस्या।


0

मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन मुझे DEBUG = गलत होने पर 500 त्रुटि भी मिल रही थी। कई घंटों के बाद, मुझे एहसास हुआ कि मैं अपने आधार के कुछ लिंक को समाप्त करना भूल गया हूँ।


यहां तक ​​कि सीएसएस और जेएस सामान?
अमचूगा am३ २३'१५ को १३:१५

0

यह पुराना है और मेरी समस्या समस्या से संबंधित है, लेकिन ओपी के लिए नहीं, बल्कि मेरा समाधान किसी और के लिए है जिसने उपरोक्त का प्रयास किया है।

मेरे पास CSS और JS फ़ाइलों को छोटा करने के लिए Django के एक संशोधित संस्करण में एक सेटिंग थी जो केवल तब चलती थी जब DEBUG बंद था। मेरे सर्वर में सीएसएस मिनिफ़ायर स्थापित नहीं था और त्रुटि को फेंक दिया। यदि आप Django-Mako-Plus का उपयोग कर रहे हैं, तो यह आपका मुद्दा हो सकता है।


0

एक छोटी बात ध्यान दें, यदि सरणी में कोई भी नहीं है, तो बाद के सभी अनुमत मेजबानों को अनदेखा कर दिया जाता है।

ALLOWED_HOSTS = [
    "localhost",
    None,
    'example.com', # First DNS alias (set up in the app)
    #'www.example.com', # Second DNS alias (set up in the app)
]

Django version 1.8.4


0

पार्टी के लिए थोड़ा देर से, और निश्चित रूप से मुद्दों की एक विरासत हो सकती है, लेकिन मुझे एक समान मुद्दा मिला है और यह पता चला है कि मेरे HTML टिप्पणी के अंदर {%%} विशेष वर्ण हैं ...

<!-- <img src="{% static "my_app/myexample.jpg" %}" alt="My image"/> -->

0

मेरा एक विचार था कि डिबग = झूठ में 500 त्रुटि फेंकी, लेकिन डिबग = सच में काम किया। किसी के लिए भी जो इस तरह की चीज और Allowed Hosts प्राप्त कर रहा है, वह समस्या नहीं है, मैंने एक टेम्पलेट के स्थिर टैग को अपडेट करके अपना दृष्टिकोण निर्धारित किया जो गलत स्थान की ओर इशारा कर रहा था।

इसलिए मैं सुझाव दूंगा कि लिंक और टैग का उपयोग किसी भी टेम्प्लेट में वायुरोधी हो, शायद कुछ चीजें डिबग में नेट के माध्यम से फिसल जाती हैं लेकिन उत्पादन में त्रुटियां देती हैं।


0

मुझे 500 त्रुटि का एक और कारण तब मिला जब DEBUG = गलत। मैं Django का उपयोग compressorउपयोगिता और हमारे सामने के अंत इंजीनियर जोड़ा संदर्भ फ़ाइलों फ़ॉन्ट के अंदर एक compress cssएक Django टेम्पलेट में ब्लॉक। ऐशे ही:

{% compress css %}
    <link href="{% static "css/bootstrap.css" %}" rel="stylesheet">
    <link href="{% static "css/bootstrap-spinedit.css" %}" rel="stylesheet">
    <link href="{% static "djangular/css/styles.css" %}" rel="stylesheet">
    <link href="{% static "fonts/fontawesome-webfont.ttf" %}" rel="stylesheet">
{% endcompress %}

समाधान लाइन के ttfनीचे फ़ाइल के लिंक को स्थानांतरित करना endcompressथा।


0

मुझे भी इसी तरह की समस्या थी और मैं रिपोर्ट करूंगा कि मैंने कैसे हल किया क्योंकि यह हो सकता है कि कोई व्यक्ति भी अनुभव कर रहा हो।

मेरे मामले में, त्रुटि इसलिए हुई क्योंकि सर्वर को मुखपृष्ठ से कुछ स्थिर फाइलें नहीं मिल रही थीं।

तो सुनिश्चित करें कि त्रुटि केवल में होती है index किसी अन्य पेज पर होती है या होती है। यदि समस्या केवल अनुक्रमणिका में हो रही है तो शायद आपको स्थैतिक फ़ाइलों की जांच करने की आवश्यकता है। मैं क्रोम पूर्वावलोकन कंसोल खोलने और किसी भी त्रुटि के लिए जाँच करने की सलाह देता हूं।

मेरे मामले में, सर्वर नहीं मिल सका favicon.icoऔर दो अन्य सीएसएस।

इसे ठीक करने के लिए मैं पास हुआ python manage.py collectstaticऔर इसने काम किया।


0

मुझे पता है कि यह पोस्ट काफी पुरानी है लेकिन यह आज भी पूरी तरह से प्रासंगिक है।

इसके लायक क्या है - मुझे DEBUG = Falseमेरी साइट पर सभी पृष्ठों के लिए 500 मिल रहे थे।

डिबग में आने पर मुझे कोई ट्रेसबैक नहीं मिला।

मुझे अपनी साइट के भीतर अपने टेम्प्लेट के प्रत्येक स्थिर लिंक से गुजरना पड़ा और अपनी छवि स्रोत के सामने एक / (आगे स्लैश) मिली। {% स्थिर ...%}। इससे 500 त्रुटि हुई DEBUG = Falseलेकिन Debug = Trueबिना किसी त्रुटि के पूरी तरह से ठीक काम किया । बहुत कष्टप्रद! चेतावनी दी! आगे की स्लैश के कारण कई घंटे का समय बर्बाद ...


0

आप python manage.py collectstaticसेट करने के बाद DEBUG = Falseऔर ALLOWED_HOSTS = ['127.0.0.1']अंदर चलाना चाह सकते हैं settings.py। इन दो चरणों के बाद मेरा वेब एप्लिकेशन मेरे स्थानीय सर्वर में भी DEBUG = गलत मोड के साथ अच्छी तरह से चला।

BTW मैं इन सेटिंग्स में है settings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware', # what i added
    'django.middleware.common.CommonMiddleware', # and so on...
]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

मुझे लगता है कि वाइटीनोइज़ सेटिंग का कलेक्टैटिक कमांड के साथ कुछ करना है।


-3

ठीक है, कई चीजों की कोशिश करने के बाद, सही समाधान है ...

आपको या DEBUG = 'FALSE'नहीं , बल्कि साथ सेट करने की आवश्यकता हैFalseFALSE'FALSE'''


मुझे लगता है कि 'FALSE' एक स्ट्रिंग है, इसलिए यह ट्रू के बराबर है, इसीलिए इसमें कोई त्रुटि नहीं है।
एपेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.