我正在努力将OpenID与我自己的Django认证Stack集成。我正在使用python-openid,django 1.2.5和postgresql,遵循examples/
下的djopenid文件夹中的示例
这是怎么回事。我正在使用一个调用python-openid的各种机制的视图,这些机制依赖于我已经投入的模型。在那里的某个地方,某些东西正在破碎。我的问题不是为什么它被破坏了,事实是我无法告诉什么被破坏了。我的模型直接针对他们的实现评论而写,但我可能犯了一两个错误。
这是堆栈跟踪:
mod_wsgi (pid=5476): Exception occurred processing WSGI script
'/var/www/Django/Testbed/Testbed.wsgi'., referer:
http://localhost/testbed/openidlogin
Traceback (most recent call last):, referer:
http://localhost/testbed/openidlogin
File "/usr/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line
252, in __call__, referer: http://localhost/testbed/openidlogin
response = middleware_method(request, response), referer:
http://localhost/testbed/openidlogin
File
"/usr/lib/python2.7/site-packages/django/contrib/sessions/middleware.py", line
36, in process_response, referer: http://localhost/testbed/openidlogin
request.session.save(), referer: http://localhost/testbed/openidlogin
File
"/usr/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py", line
61, in save, referer: http://localhost/testbed/openidlogin
sid = transaction.savepoint(using=using), referer:
http://localhost/testbed/openidlogin
File "/usr/lib/python2.7/site-packages/django/db/transaction.py", line 229,
in savepoint, referer: http://localhost/testbed/openidlogin
connection._savepoint(sid), referer: http://localhost/testbed/openidlogin
File "/usr/lib/python2.7/site-packages/django/db/backends/__init__.py", line
56, in _savepoint, referer: http://localhost/testbed/openidlogin
self.cursor().execute(self.ops.savepoint_create_sql(sid)), referer:
http://localhost/testbed/openidlogin
File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 15,
in execute, referer: http://localhost/testbed/openidlogin
return self.cursor.execute(sql, params), referer:
http://localhost/testbed/openidlogin
File
"/usr/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py
", line 44, in execute, referer: http://localhost/testbed/openidlogin
return self.cursor.execute(query, args), referer:
http://localhost/testbed/openidlogin
DatabaseError: current transaction is aborted, commands ignored until end of
transaction block, referer: http://localhost/testbed/openidlogin
所以我理解django正在使用postgresql transaction management并且在这个过程的某个地方,我正在做某些导致数据库的完整性问题。但它并没有告诉我可能是什么,或者我的代码中的错误在哪里。我在settings.py
中尝试了turning this off,看看是否会产生更合理的堆栈跟踪。它没有。
我的问题非常简单:我如何找出问题所在?我可以从一个有问题的SQL语句向后工作(因为这将告诉我哪些模型失败)或甚至更好的涉及我的一些代码的堆栈跟踪。甚至“postgresql错误代码XYZ”给了我一些谷歌。是否有一些我可以打开的设置让django更健谈?我正在使用
DEBUG = True
TEMPLATE_DEBUG = DEBUG
显然,我甚至没有得到黄色的错误页面。只是你的普通旧500内部服务器错误和apache错误日志中的堆栈跟踪。还有其他地方我可以看看吗?我可以制定一些选项或者我可以用来观察执行的一些奇怪的工具吗?
答案 0 :(得分:3)
在某个端口上通过manage.py运行它,在您的视图中调用 ipdb.set_trace()并逐步跟踪它 - 就像在任何其他调试过程中一样。
此外,您可以使用built-in python/django logging features并将我们的内容打印到日志文件中。
查看here了解更多提示 - 或许其中一些对您有用。