django-debug-toolbar在获取sql统计信息时破坏管理员

Pat*_*een 26 python django django-admin django-debug-toolbar

环境:django调试工具栏在使用时获取sql统计信息,否则它在其他页面上工作正常,只在具有sql查询的页面上打破.

Request Method: GET
Request URL: http://www.blog.local/admin/

Django Version: 1.9.7
Python Version: 2.7.6
Installed Applications:
[
 ....
 'django.contrib.staticfiles',
 'debug_toolbar']
Installed Middleware:
[
  ...
 'debug_toolbar.middleware.DebugToolbarMiddleware']

Traceback:

File "/home/vagrant/www/dx/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  235.                 response = middleware_method(request, response)

File "/home/vagrant/www/dx/venv/local/lib/python2.7/site-packages/debug_toolbar/middleware.py" in process_response
  129.                 panel.generate_stats(request, response)

File "/home/vagrant/www/dx/venv/local/lib/python2.7/site-packages/debug_toolbar/panels/sql/panel.py" in generate_stats
  192.                     query['sql'] = reformat_sql(query['sql'])

File "/home/vagrant/www/dx/venv/local/lib/python2.7/site-packages/debug_toolbar/panels/sql/utils.py" in reformat_sql
  27.     return swap_fields(''.join(stack.run(sql)))

File "/home/vagrant/www/dx/venv/local/lib/python2.7/site-packages/sqlparse/engine/filter_stack.py" in run
  29.             stream = filter_.process(stream)

Exception Type: TypeError at /admin/
 Exception Value: process() takes exactly 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)

Pat*_*een 47

sqlparse最新版本今天发布,它与django-debug-toolbar版本1.4,Django版本1.9不兼容

解决方法是强制pip安装 sqlparse==0.1.19

  • 你能否确定你正在使用的版本?我刚刚在几天前设置了`django-debug-toolbar == 1.5`(上传到pypi 2016-07-21)并且它清楚地列出了`sqlparse> = 0.2.0`作为依赖项,并且对我自己和另一个工作正常我的团队成员.如果有人遵循django-debug-toolbar == 1.5的建议,他们将生成相同的错误.在1.5版本发布前一天,访问者很容易想念您. (2认同)

Rex*_*ury 9

最新版本sqlparse与之不兼容django-debug-toolbar==1.4.

你的选择是:

  • 升级django-debug-toolbar1.5
  • 强制安装 sqlparse==0.1.19