После того, как я изменил DEBUG = False
, мой сайт сгенерирует 500 (используя wsgi & manage.py runserver), и в журнале ошибок Apache не будет информации об ошибках, и он будет работать нормально, когда я перейду debug
на True
.
Я использую Django 1.5 и Python 2.7.3, здесь есть журнал доступа Apache и без какого-либо журнала в журнале ошибок Apache
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',
)
django
settings
django-1.5
zhiguo.wang
источник
источник
Ответы:
В Django 1.5 введен параметр разрешенных хостов, который необходим по соображениям безопасности. Файл настроек, созданный с помощью Django 1.5, содержит новый раздел, который необходимо добавить:
Добавьте свой хост здесь, как
['www.beta800.net']
или['*']
для быстрого теста, но не используйте['*']
для производства .источник
['*']
в производстве.django-pipeline
с поведением России, когда статика еще не была собрана. Как общий совет, размещение точки останова вhandle_uncaught_exception
методе Django поможет вам понять, что здесь происходит.Я знаю, что уже поздно, но я закончил с поиском моей ошибки 500 с
DEBUG=False
, в моем случае это оказалось,ALLOWED_HOSTS
но я использовалos.environ.get('variable')
для заполнения хостов, я не заметил этого, пока я не включил ведение журнала, вы можете записать все ошибки в файл с помощью приведенного ниже, и он будет регистрироваться, даже еслиDEBUG=False
:источник
Я столкнулся с той же проблемой совсем недавно в Django 2.0. Я смог выяснить проблему, установив
DEBUG_PROPAGATE_EXCEPTIONS = True
. Смотрите здесь: https://docs.djangoproject.com/en/2.0/ref/settings/#debug-propagate-exceptionsВ моем случае ошибка была
ValueError: Missing staticfiles manifest entry for 'admin/css/base.css'
. Я исправил это локальноpython manage.py collectstatic
.источник
В моем случае чтение документов сторонних приложений меня спасло.
Виновник? django_compressor
я имел
DEBUG = True
всегда давал мне 500. Чтобы это исправить, мне нужна была строка в моих настройках, чтобы она работалаисточник
Правильно, в Django 1.5, если DEBUG = False, настройте ALLOWED_HOSTS, добавляя домены без номера порта. пример:
источник
Вы также должны проверить свои URL повсюду. Если для этого параметра
DEBUG
установлено значениеFalse
, все URL-адреса без завершающего кода/
рассматриваются как ошибка, в отличие от того, что у вас естьDEBUG = True
, и в этом случае Django будет добавляться/
везде, где оно отсутствует. Короче говоря, убедитесь, что все ссылки заканчиваются косой чертой ВЕЗДЕ.источник
DEBUG=False
может такжеУ меня есть веселая история для всех. Добравшись до этой страницы, я сказал: «Эврика! Я спасен. Это должно быть моей проблемой». Поэтому я вставил требуемый
ALLOWED_HOSTS
список в setting.py и ... ничего. Та же старая ошибка 500. И нет, это было не из-за отсутствия файла 404.html.Поэтому в течение 2 дней я занимался дикими теориями, такими как то, что это было связано с обслуживанием статических файлов (понимаю, что я нуб, и нубы не знают, что они делают).
Так что это было? Теперь г-н Модератор пришел к полезному совету. В то время как моя разработка Django - это версия 1.5. Что-то, моя производственная версия сервера - 1.5. Что-то + 1 ... или, может быть, плюс 2. Что угодно. И так после того, как я добавил
ALLOWED_HOSTS
в настольную версию settings.py , в которой отсутствовал то, что запрашивал hwjp - «значение по умолчанию в settings.py, возможно, с пояснительным комментарием» - я сделал то же самое на сервере с правильный домен для этого.Но я не заметил, что на рабочем сервере с более поздней версией Django было значение по умолчанию в settings.py с пояснительным комментарием. Это было намного ниже, где я сделал свою запись, вне поля зрения на мониторе. И, конечно, список был пуст. Отсюда моя трата времени.
источник
local_settings.py
для каждой среды и затем импортировать это вsettings.py
.Дополнение основного ответа.
Меня раздражает изменение глобальных констант ALLOWED_HOSTS и DEBUG
settings.py
при переключении между разработкой и производством. Я использую этот код для автоматической установки этих настроек:Если вы используете macOS, вы можете написать более общий код:
источник
Для чего это стоит - я получал 500 с только
DEBUG = False
на некоторых страницах. Отслеживание исключения с помощью pdb выявило недостающий ресурс (я подозреваю, что{% static ... %}
тег шаблона был виновником 500).источник
static
чтобы включить файл CSS, который не существует.Я столкнулся с той же проблемой, когда я сделал
DEBUG = FALSE
. Вот консолидированное решение, рассмотренное в ответах выше и других постах.По умолчанию в settings.py у нас есть
ALLOWED_HOSTS = []
. Вот возможные изменения, которые вы должны будете внести вALLOWED_HOSTS
стоимость в соответствии со сценарием, чтобы избавиться от ошибки:1: Ваше доменное имя:
2: IP вашего развернутого сервера, если у вас еще нет доменного имени (что было в моем случае и работало как шарм)
3: если вы тестируете на локальном сервере, вы можете отредактировать свой
settings.py
илиsettings_local.py
как:4: Вы также можете указать «*» в
ALLOWED_HOSTS
значении, но это не рекомендуется в производственной среде по соображениям безопасности:Я также разместил подробное решение в своем блоге, к которому вы можете обратиться.
источник
ALLOWED_HOSTS - не единственная проблема, для меня мне пришлось создать 404.html и поместить его на базовый уровень моих шаблонов (не на уровне приложения). Кроме того, вы можете создать представление 404 и добавить URL-адрес обработчика 404, но я думаю, что это по желанию. 404.html исправил
в mainproject.urls
в app.views
тогда сделайте шаблон templates / 404.html
получил это из другого сообщения S / O, что я не могу найти его
РЕДАКТИРОВАТЬ
также я получаю 500 ошибок, когда обслуживаю активы с белым шумом. Не могу понять это на всю жизнь, ошибка заключалась в том, что ValueError от whitenoise не смог найти актив, который я тоже не смог найти, пришлось пойти с дефолтным django, обслуживающим пока
источник
python manage.py collectstatic
починил это.Я искал и тестировал больше об этой проблеме, и я понял, что причиной этого могут быть каталоги статических файлов, указанные в settings.py, поэтому сначала нужно выполнить эту команду
в settings.py код должен выглядеть примерно так:
источник
Я знаю, что это очень старый вопрос, но, возможно, я мог бы помочь кому-то еще. Если после установки DEBUG = False у вас возникает ошибка 500, вы всегда можете запустить run.ver manage.py в командной строке, чтобы увидеть ошибки, которые не появятся ни в одном веб-журнале ошибок.
источник
Середина 2019 года, и я столкнулся с этой ошибкой после нескольких лет разработки с Django. Озадачил меня всю ночь! Это не было разрешено хосту (который должен выдать 400), все остальное было проверено, наконец, сделал некоторые записи об ошибках, только чтобы обнаружить, что некоторые отсутствующие / или испорченные манифесты статических файлов (после collectstatic) были испорчены при установке. Короче говоря, для тех, кто в замешательстве И ТАК, ЧТО ПРОИЗОЙДЕТ ИСПОЛЬЗОВАТЬ WHITENOISE ИЛИ STANICFILE BACKEND С CACHE (манифест статических файлов), возможно, это для вас.
Убедитесь, что вы все настроили (как я делал для бэкэнда whitenoise ... бэкэнды django читайте дальше) http://whitenoise.evans.io/en/stable/django.html
Если код ошибки 500 все еще сбивает вас с толку, обратите внимание на ваши настройки.STATICFILES_STORAGE.
Установите это либо (для белого шума с компрессией)
или (оставить по умолчанию в Django)
В общем, ПРОБЛЕМА, казалось, возникла из-за того, что этот белый кеш + бэкэнд сжатия ->
или собственный кеширующий бэкэнд Django ->
... не очень хорошо работал для меня, так как мой CSS ссылался на некоторые другие источники, которые могут быть перепутаны во время кеширования сборщика / бэкэнда. Эта проблема также потенциально освещена в http://whitenoise.evans.io/en/stable/django.html#storage-troubleshoot
источник
Я думаю, что это также могут быть настройки http-сервера. Мой все еще сломан и имел ALLOWED_HOSTS все время. Я могу получить к нему доступ локально (я использую gunicorn), но не через доменное имя, когда DEBUG = False. когда я пытаюсь использовать доменное имя, оно выдает мне ошибку, поэтому заставляет меня думать, что это проблема, связанная с nginx.
Вот мой файл conf для nginx:
источник
У меня есть похожая проблема, в моем случае она была вызвана наличием скрипта Commented внутри тега body.
источник
Я столкнулся с этим вопросом. Оказывается, я включил в шаблон, используя
static
тег шаблона, файл, который больше не существует. Просмотр журналов показал мне проблему.Я думаю, что это только одна из многих возможных причин такого рода ошибок.
Мораль истории: всегда регистрируйте ошибки и всегда проверяйте журналы.
источник
Благодаря @squarebear, в файле журнала я нашел ошибку:
ValueError: The file 'myapp/styles.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage ...>
.У меня было несколько проблем в моем приложении Django. Я убрал строку
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
которую нашел в документации к героку.Мне также пришлось добавить дополнительный каталог (благодаря еще одному SO-ответу )
static
в корень приложения django,myapp/static
хотя я и не использовал его. Затем выполнение командыpython manage.py collectstatic
перед запуском сервера решило проблему. Наконец-то все заработало.источник
Я начал получать 500 для отладки = False в виде
при повышении django.core.exceptions.ValidationError вместо повышения rest_framework.serializers.ValidationError
Честно говоря, он уже поднимал 500, но как ошибка ValidationError с debug = False это изменилось на NoReverseMatch.
источник
это может помочь кому-то еще, в моем случае проблема с отсутствующим значком.
источник
Я знаю, что это старый вопрос, но я также получал ошибку 500, когда DEBUG = False. Через несколько часов я понял, что забыл завершить некоторые ссылки в моем base.html косой чертой.
источник
Это старая проблема, и моя проблема оказалась связанной с проблемой, но не с ОП, но мое решение для всех, кто попробовал вышеописанное безрезультатно.
У меня была настройка в модифицированной версии Django для минимизации файлов CSS и JS, которые запускались только при выключенном DEBUG. На моем сервере не был установлен минификатор CSS, и он выдал ошибку. Если вы используете Django-Mako-Plus, это может быть вашей проблемой.
источник
Следует отметить одну небольшую вещь: если в массиве нет None, то все последующие разрешенные хосты игнорируются.
Django version 1.8.4
источник
Немного опоздал на вечеринку, и, конечно, мог возникнуть целый ряд проблем, но у меня была похожая проблема, и оказалось, что у меня есть {%%} специальные символы внутри моего html-замечания ...
источник
У меня было одно представление, которое выдавало ошибку 500 в debug = false, но работало в debug = true. Для тех, кто получает подобные вещи и с Allowed Hosts, это не проблема, я исправил свое мнение, обновив статический тег шаблона, который указывал на неправильное местоположение.
Так что я бы посоветовал просто проверять ссылки и теги в любых используемых шаблонах, возможно, некоторые вещи проскальзывают в сети при отладке, но приводят к ошибкам в работе.
источник
Я обнаружил еще одну причину ошибки 500, когда DEBUG = False. Я использую Django
compressor
утилиты и наши интерфейсные инженер добавлены ссылки на файлы шрифтов внутри вcompress css
блоке в шаблоне Django. Как это:Решением было переместить ссылку на
ttf
файл нижеendcompress
строки.источник
У меня была проблема, похожая на эту, и я сообщу, как я решил мою, потому что может случиться так, что кто-то также испытывает то же самое.
В моем случае ошибка была вызвана тем, что сервер не обнаружил статические файлы с домашней страницы.
Поэтому убедитесь, что ошибка возникает только в
index
или на другой странице. Если проблема возникает только в индексе, очень вероятно, что вам нужно проверить статические файлы. Я рекомендую открыть консоль предварительного просмотра Chrome и проверить наличие ошибок.В моем случае сервер не смог найти
favicon.ico
и два других CSS.Чтобы исправить это, я прошел,
python manage.py collectstatic
и это сработало.источник
Я знаю, что этот пост довольно старый, но он все еще актуален сегодня.
Для чего это стоит - я получал 500 с
DEBUG = False
для всех страниц на моем сайте.Я не получил трассировку при отладке.
Я должен был пройти через все статические ссылки в моих шаблонах на моем сайте и найти одну / (прямая косая черта) перед моим источником изображения. {% static ...%}. Это вызвало ошибку 500,
DEBUG = False
но прекрасно работалоDebug = True
без ошибок. Очень надоедливый! Имейте в виду! Много часов впустую из-за косой черты ...источник
Вы можете запустить
python manage.py collectstatic
после установкиDEBUG = False
иALLOWED_HOSTS = ['127.0.0.1']
вsettings.py
. После этих двух шагов мое веб-приложение хорошо работало на моем локальном сервере даже в режиме DEBUG = False.Кстати, у меня есть эти настройки в
settings.py
.Я предполагаю, что, возможно, настройка whitenoise как-то связана с командой collectstatic.
источник
Хорошо, после попытки многих вещей, правильное решение ...
вам нужно установить
DEBUG = 'FALSE'
неFalse
илиFALSE
, но'FALSE'
с''
источник