如何调试 DJango 测试服务器提供的错误 500?

Posted

技术标签:

【中文标题】如何调试 DJango 测试服务器提供的错误 500?【英文标题】:How do I debug error 500's served up by the DJango test server? 【发布时间】:2011-12-30 20:36:59 【问题描述】:

我正在尝试调试我的DJango Paypal IPN integration,但我很挣扎。 Django 开发服务器向控制台报告 500 错误(但没有其他详细信息),IPN 测试工具报告 500 错误但没有其他详细信息。

我已尝试禁用 DEBUG 模式以尝试让它向我发送电子邮件,但尽管将 EMAIL_HOST 设置为合适的,但我没有看到任何电子邮件。我尝试验证电子邮件系统是否正在调用send_mail ..但它成功了,我仍然没有看到有关内部服务器错误的电子邮件。

我可能会错过什么?

编辑

我正在从 PyCharm 运行开发服务器,控制台输出如下所示:

runnerw.exe C:\Python26\python.exe manage.py runserver 192.168.1.4:80
Validating models...

0 errors found
Django version 1.4 pre-alpha, using settings 'settings'
Development server is running at http://192.168.1.4:80/
Quit the server with CTRL-BREAK.
Verifying...
...response: VERIFIED
IpnEndPoint.on_process
Valid: u'last_name': u'Smith', u'txn_id': u'491116223', u'receiver_email': u'seller@paypalsandbox.com', u'payment_status': u'Completed', u'tax': u'2.02', u'payer_status': u'unverified', u'residence_country': u'US', u'invoice': u'abc1234', u'address_state': u'CA', u'item_name1': u'something', u'txn_type': u'cart', u'item_number1': u'AK-1234', u'quantity1': u'1', u'payment_date': u'14:03:49 Nov 16, 2011 PST', u'first_name': u'John', u'mc_shipping': u'3.02', u'address_street': u'123, any street', u'charset': u'windows-1252', u'custom': u'xyz123', u'notify_version': u'2.4', u'address_name': u'John Smith', u'address_zip': u'95131', u'test_ipn': u'1', u'receiver_id': u'TESTSELLERID1', u'payer_id': u'TESTBUYERID01', u'mc_handling1': u'1.67', u'verify_sign': u'A8SIYWSxkrwNPfuNewSuxsIAatvMAi2mxYjlYvaiWh3Z4BuIQojK3KBO', u'mc_handling': u'2.06', u'mc_gross_1': u'9.34', u'address_country_code': u'US', u'address_city': u'San Jose', u'address_status': u'confirmed', u'address_country': u'United States', u'mc_fee': u'0.44', u'mc_currency': u'USD', u'payer_email': u'buyer@paypalsandbox.com', u'payment_type': u'instant', u'mc_shipping1': u'1.02'
Logging Transaction..
[16/Nov/2011 22:20:49] "POST /IPN/ HTTP/1.0" 500 104946

【问题讨论】:

能否发布您的控制台内容(包括用于调用服务器的命令行)? 【参考方案1】:

看看django-sentry

它记录 500 个错误(也支持常规记录),使动态“橙色 500 页”在事后可浏览。当您从未获得原始错误页面时,这尤其有用,例如像您的情况一样使用 ajax 或远程 api 时

【讨论】:

我只运行 1.8,但它有一个 sentry_testing 设置,在调试模式下工作。已经删除了吗? 你可能是对的。我只是不知道这是可能的。【参考方案2】:

鉴于您正在运行 django 的 pre-alpha 版本,我建议您在 django 用户列表 https://groups.google.com/group/django-users 上提出这个问题

【讨论】:

很好看;我以为我使用的是稳定版本! 这里没有回答我的问题,但你把我打开的另一个问题搞定了。请将此作为该问题的答案发布,我会接受它作为最终答案.. ...因为在回归到 1.3.1 稳定版后它可以工作! 我在问题中链接的那个:***.com/questions/8145907/…【参考方案3】:

要尝试的另一件事是在您的机器上启动一个简单的 SMTP 服务器。

python -m smtpd -n -c DebuggingServer localhost:1025

这将在您的控制台上输出所有电子邮件的标题和正文。 确保 localhost 和端口 1025 对应于您在 settings.py 中的内容,分别在 EMAIL_HOST 和 EMAIL_PORT 中。

来源: Djangodocs Testing email sending

【讨论】:

以上是关于如何调试 DJango 测试服务器提供的错误 500?的主要内容,如果未能解决你的问题,请参考以下文章

在 Nginx 后面调试 Django/Gunicorn

Django 错误请求 (400) 调试=假

React 前端与 Django REST 后端的集成测试

Django 和 AngularJS:如何显示来自 Django 调试错误消息的 Angular $http 错误

如何使用 pycharm 调试/断点我的 django 应用程序?

从 PyCharm 社区版中的鼠标右键单击上下文菜单运行/调试 Django 应用程序单元测试?