【问题标题】:satchmo can't handle 500 errorsatchmo 无法处理 500 错误
【发布时间】:2010-01-01 04:24:16
【问题描述】:

如果产品的数量是 Unicode 字符,我得到 /add/处的UnicodeEncodeError。当我设置 DEBUG = False 时,satchmo 无法处理 500 错误,无法返回 HttpResponse 对象,但 handler404 没问题。我在 apache 错误日志中找到以下内容。

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124] mod_wsgi
(pid=10523): Exception occurred processing WSGI script '/etc/httpd/
conf.d/myshop.wsgi'.

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124] Traceback
(most recent call last):

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
etc/httpd/conf.d/myshop.wsgi", line 34, in application[Thu Dec 31
23:05:31 2009] [error] [client 192.168.123.124]     return _application
(environ, start_response)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/core/handlers/
wsgi.py", line 241, in __call__

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]
response = self.get_response(request)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/core/handlers/
base.py", line 134, in get_response

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
self.handle_uncaught_exception(request, resolver, exc_info)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/core/handlers/
base.py", line 166, in handle_uncaught_exception

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
callback(request, **param_dict)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/views/
defaults.py", line 24, in server_error

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
http.HttpResponseServerError(t.render(Context({})))

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 178, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
self.nodelist.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 779, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]
bits.append(self.render_node(node, context))

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
node.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
loader_tags.py", line 97, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
compiled_parent.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 178, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
self.nodelist.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 779, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]
bits.append(self.render_node(node, context))

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
node.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
loader_tags.py", line 24, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     result
= self.nodelist.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 779, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]
bits.append(self.render_node(node, context))

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
node.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
loader_tags.py", line 24, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     result
= self.nodelist.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 779, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]
bits.append(self.render_node(node, context))

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     return
node.render(context)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
__init__.py", line 936, in render

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     dict =
func(*args)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/Satchmo-1.0_pre-py2.5.egg/
satchmo_store/shop/templatetags/satchmo_util.py", line 179, in
satchmo_language_selection_form

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]
request = context['request']

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]   File "/
opt/python-2.5.4/lib/python2.5/site-packages/django/template/
context.py", line 44, in __getitem__

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124]     raise
KeyError(key)

[Thu Dec 31 23:05:31 2009] [error] [client 192.168.123.124] KeyError:
'request' 

这里是 500.html:

{% extends "base.html" %}
{% load i18n %}

{% block navbar %}
   <li class="first"><a href="{{ shop_base }}/">{% trans "Home" %}</a></li>
{% endblock %}

{% block content %}

    <h3>{% trans "Error" %}</h3>
    <h4>{% trans "There was an error with the store.  The admin has been notified." %}</h4>

{% endblock %}

这是base.html:

{% load i18n satchmo_category satchmo_google satchmo_util satchmo_currency satchmo_discounts app_plugins normalize_decimal %}
{% block doctype %}<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
{% endblock %}
<head>
    {% block extra-head %}{% endblock %}
    {% block stylesheet %}<link rel="stylesheet" href="{{ media_url }}css/style.css" />{% endblock %}
    <title>{% block title %}{{ shop_name }}{% if pagetitle %}: {{ pagetitle }}{% endif %}{% endblock %}</title>
    {% plugin_point "page_head" %}
</head>
{% block body %}
contents
{% endblock %}
</html>

django为什么不能处理500错误页面?

【问题讨论】:

  • 很难说,除非您发布 500 处理程序的代码...
  • @Daniel Roseman 谢谢提醒
  • 在开发服务器下运行是否得到同样的结果?
  • @Peter Rowell:不,这是一个错误,顺便说一句,我已经修复了这个错误。但是我想知道django为什么不能处理500错误页面。
  • 我不知道为什么你的副本不能处理它。 使用开发服务器尝试以下操作:首先使用settings.DEBUG = True 尝试保证 500 错误(我总是喜欢 1/0)的视图,然后使用 False。如果您的 500 页面在开发服务器下正常工作,那么在您的生产服务器上尝试相同的操作:首先使用 settings.DEBUG = True,然后使用 False。请记住,您可能必须重新启动生产服务器才能使更改生效。您正在测试的是 a) 您的 500 页是否正确编写,并且 b) 您没有遇到环境问题。

标签: django debugging satchmo


【解决方案1】:

Django's documentation

默认 500 视图通过 no 此模板的变量并且是 用一个空的 Context 渲染到 减少额外错误的机会

我认为你应该对你的 500.html 保持同样的方法,not 扩展 base.html,not 甚至引用 i18n,而是保持它尽可能简单

当您收到服务器错误时,请考虑上下文:出现问题,您不知道发生了什么。您甚至可能处于未满足所有常见先决条件的情况,因此您应该使页面尽可能简单。
就个人而言,我什至避免使用图像,只依赖于一些 ASCII 艺术 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2018-01-29
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多