如何调试Django测试服务器返回的500错误?
我正在尝试调试我的Django Paypal IPN集成,但遇到了困难。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
3 个回答
0
可以看看 django-sentry
它可以记录500错误(也支持普通的日志记录),这样在出错后你可以查看那些动态的“橙色500页面”。这在你根本看不到原始错误页面的情况下特别有用,比如使用ajax或者远程API的时候,就像你遇到的情况。
1
考虑到你正在使用一个早期测试版的Django,我建议你把这个问题发到Django用户讨论组,链接是 https://groups.google.com/group/django-users
2
另一个可以尝试的方法是在你的电脑上启动一个简单的SMTP服务器。
python -m smtpd -n -c DebuggingServer localhost:1025
这样做会在你的控制台上显示所有邮件的标题和内容。确保你的设置文件settings.py中的localhost和端口1025与EMAIL_HOST和EMAIL_PORT的设置相对应。