Python Django消息中间件故障
我在virtualenv中使用Django 1.5.1,在OS X 10.8.4上使用Python 2.7。在Django设置中,我从Python Django消息中间件故障,python,django,python-2.7,django-settings,django-middleware,Python,Django,Python 2.7,Django Settings,Django Middleware,我在virtualenv中使用Django 1.5.1,在OS X 10.8.4上使用Python 2.7。在Django设置中,我从DEBUG=True更改为DEBUG=False,出现了一个错误: Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in r
DEBUG=True
更改为DEBUG=False
,出现了一个错误:
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\u name/bin/postactivate
文件中设置环境变量,如下所示:
export DJANGO_SETTINGS_MODULE=project_name.settings.local
我的base.py
文件如下所示,我的local.py
设置如下所示
当我想禁用调试时,为什么会发生这种情况?我如何跟踪问题发生的原因?您可以在shell上尝试以下方法吗:
from django.conf import settings
print settings.MIDDLEWARE_CLASSES
如果在中间件类中没有看到django.contrib.messages.middleware.MessageMiddleware
,则应该添加它
我猜您在开发过程中没有遇到任何500错误,因此这一行使用了
消息。错误(请求'500-内部服务器错误')
从未执行过,因此您在DEBUG=True中没有遇到此问题。您可以在shell上尝试此操作吗:
from django.conf import settings
print settings.MIDDLEWARE_CLASSES
如果在中间件类中没有看到django.contrib.messages.middleware.MessageMiddleware
,则应该添加它
我猜您在开发过程中没有遇到任何500错误,因此这一行使用了
消息。错误(请求'500-内部服务器错误')
从未执行过,因此您在DEBUG=True中没有遇到此问题。在使用开发服务器时,当我将DEBUG设置为false时,我有相同的堆栈跟踪。在我的例子中,它与Django允许的_HOSTS设置/检查有关。由于引发了引起错误的可疑操作异常,这些症状令人困惑
如果我的设置文件中有
允许的\u HOSTS=['localhost']
,并且http://localhost:8000
作为我的浏览器地址,一切都很好。但是,如果我使用IP地址http://127.0.0.1:8000/
我直接得到了这个错误。在使用开发服务器时,当我将DEBUG设置为false时,我有相同的堆栈跟踪。在我的例子中,它与Django允许的_HOSTS设置/检查有关。由于引发了引起错误的可疑操作异常,这些症状令人困惑
如果我的设置文件中有
允许的\u HOSTS=['localhost']
,并且http://localhost:8000
作为我的浏览器地址,一切都很好。但是,如果我使用IP地址http://127.0.0.1:8000/
我直接得到了这个错误。在我的virtualenv中,我的python conssole输出:('django.middleware.common.CommonMiddleware','django.middleware.gzip.gzip中间件','django.middleware.csrf.CsrfViewMiddleware','django.contrib.sessions.middleware','django.contrib.auth.middleware.AuthenticationMiddleware.AuthenticationMiddleware','django.messages.middleware.middleware.Message.Message.MessageMiddleware','debug\re')
当我做打印设置时。中间件类
。是的,可能是我在开发过程中从未遇到错误500=)我现在完全不知道如何解决这个问题--这个错误不应该存在,我也很困惑。您的设置是什么。消息存储,以及您使用的是什么版本的Django?打印设置。消息存储
输出Django.contrib.messages.STORAGE.fallback.FallbackStorage
。Django 1.5.1版。您是否对视图中的请求
进行了任何修改?你能试着打印请求吗?\u messages
在view.Hm中,当我放置打印请求时。\u messages
在这个处理程序\u 500
函数中,我得到一个不同的错误:AttributeError:'WSGIRequest'对象没有属性'\u messages'
。在我的VirtualEnvironment中,我的python conssole输出这个:('django.middleware.common.CommonMiddleware','django.middleware.gzip.gzip中间件','django.middleware.csrf.CsrfViewMiddleware','django.contrib.sessions.middleware','django.contrib.auth.middleware.AuthenticationMiddleware.AuthenticationMiddleware','django.messages.middleware.middleware.Message.Message.MessageMiddleware','debug\re')
当我做打印设置时。中间件类
。是的,可能是我在开发过程中从未遇到错误500=)我现在完全不知道如何解决这个问题--这个错误不应该存在,我也很困惑。您的设置是什么。消息存储,以及您使用的是什么版本的Django?打印设置。消息存储
输出Django.contrib.messages.STORAGE.fallback.FallbackStorage
。Django 1.5.1版。您是否对视图中的请求
进行了任何修改?您可以尝试打印请求吗?\u messages
在view.Hm中,当我放置打印请求时。\u messages
在这个处理程序\u 500
函数中,我得到一个不同的错误:AttributeError:'WSGIRequest'对象没有属性'\u messages'
。包括允许的\u HOSTS=['localhost']为我解决了这个问题。谢谢包括允许的_HOSTS=['localhost']为我解决了这个问题。谢谢