1

Я использую Django 1.5.1 в virtualenv, Python 2.7 на OS X 10.8.4. Я изменил от DEBUG = True к DEBUG = False в моих настройках Django, и я получил сообщение об ошибке:Ошибка Django MessageMiddleware

Traceback (most recent call last): 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in run 
    self.result = application(self.environ, self.start_response) 
    File "/Users/kilroy/.virtualenvs/project_name/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 255, in __call__ 
    response = self.get_response(request) 
    File "/Users/kilroy/.virtualenvs/project_name/lib/python2.7/site-packages/django/core/handlers/base.py", line 178, in get_response 
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
    File "/Users/kilroy/.virtualenvs/project_name/lib/python2.7/site-packages/django/core/handlers/base.py", line 224, in handle_uncaught_exception 
    return callback(request, **param_dict) 
    File "/Users/kilroy/Sites/PYTHON/project_name/apps/common/views.py", line 436, in handler_500 
    messages.error(request, '500 - Internal server error.') 
    File "/Users/kilroy/.virtualenvs/project_name/lib/python2.7/site-packages/django/contrib/messages/api.py", line 102, in error 
    fail_silently=fail_silently) 
    File "/Users/kilroy/.virtualenvs/project_name/lib/python2.7/site-packages/django/contrib/messages/api.py", line 22, in add_message 
    raise MessageFailure('You cannot add messages without installing ' 
MessageFailure: You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware 

Я использую другой файл настроек для разработки и производства, и на моей машине развития я установить переменные окружения в /Users/kilroy/.virtualenvs/project_name/bin/postactivate файле, как это:

export DJANGO_SETTINGS_MODULE=project_name.settings.local 

Мой base.py файл выглядит следующим образом https://dpaste.de/avXmL/, и мои local.py настройки как этот https://dpaste.de/Z0PXv/.

Почему это происходит, когда я хочу отключить отладку и как я могу узнать, почему эта проблема возникает в первую очередь?

ответ

1

У меня была такая же трассировка стека, когда я устанавливал значение DEBUG false при использовании сервера разработки. В моем случае это было связано с установкой/проверкой ALLOWED_HOSTS Django. Симптомы были сбивчивыми, потому что было вызвано исключение SuspiciousOperation, которое вызвало ошибку.

Если бы у меня был ALLOWED_HOSTS = ['localhost'] в моем файле настроек и http://localhost:8000, так как мой адрес браузера все было хорошо. Однако, если я использую IP-адрес http://127.0.0.1:8000/, я получил эту ошибку.

+0

Включая ALLOWED_HOSTS = ['localhost'] решил это для меня. Благодаря! – user984003

0

Вы можете попробовать это на скорлупе:

from django.conf import settings 
print settings.MIDDLEWARE_CLASSES 

И если вы не видите django.contrib.messages.middleware.MessageMiddleware в MIDDLEWARE_CLASSES вы должны добавить его.

Я думаю, вы не получили никаких ошибок 500 во время разработки, и поэтому эта строка с использованием messages.error(request, '500 - Internal server error.') никогда не выполнялась, и поэтому вы не сталкивались с этой проблемой в DEBUG = True.

+0

В моей виртуальной среде моя консоль python выводит это: '('django.middleware.common.CommonMiddleware', 'django.middleware.gzip.GZipMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib .sessions.middleware.SessionMiddleware ',' django.contrib.auth.middleware.AuthenticationMiddleware ',' django.contrib.messages.middleware.MessageMiddleware ',' debug_toolbar.middleware.DebugToolbarMiddleware ') 'когда я делаю' print settings.MIDDLEWARE_CLASSES' , Да, может быть, я никогда не получал ошибку 500 во время разработки =) Я сейчас полностью смущен, как решить эту проблему. - – errata

+0

Эта ошибка не должна быть тогда, я тоже смущен. Каковы ваши настройки.MESSAGE_STORAGE, а также какую версию Django вы используете? –

+0

'print settings.MESSAGE_STORAGE' выдает' django.contrib.messages.storage.fallback.FallbackStorage'. Версия Django 1.5.1. – errata