web-dev-qa-db-ja.com

SQL統計を取得しているときにdjango-debug-toolbarが管理者に違反する

環境:Djangoデバッグツールバーが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)
26
Patlola Praveen

sqlparseの最新バージョンが本日リリースされ、Django-debug-toolbarバージョン1.4、Djangoバージョン1.9と互換性がありません。

回避策は、pipにインストールを強制することですsqlparse==0.1.19

47
Patlola Praveen

sqlparseの最新バージョンはDjango-debug-toolbar==1.4と互換性がありません。

選択肢は次のとおりです。

  • Django-debug-toolbar1.5にアップグレード
  • 強制インストールsqlparse==0.1.19
9
Rex Salisbury

@Rex Salisbury不正解です。

インストールする必要があります

Django-debug-toolbar==1.5
sqlparse==0.2.0

または

Django-debug-toolbar==1.4
sqlparse==0.1.19

Cloud9でテスト済み、Django 1.9.2

3
Tao Xu

申し訳ありませんが、私にとってはDjango 1.8.11の場合、これはこれでのみ機能しました:

Django-debug-toolbar==1.5
sqlparse==0.2.1
0
Matheus CAS