2011-02-26 37 views
47

AJAXクエリで(素晴らしい)django-debug-toolbarを使用する合理的な方法があるのではないかと不思議です。AJAX呼び出しでdjango-debug-toolbarを使用するには?

例えば、私は、Django URLをヒットしてインラインでロードするために、多数のパラメータを持つjQuery $ .getを使用します。私はそれにエラーがある場合、それはツールバーに登録されていません。 DDTがレスポンスのbodyタグに付いているので、AJAX URLをコピーすることでそれを使うことはできません.AJAXレスポンスでbodyタグを含めることは意味がありません。

いずれの方向にも役立ちます。ありがとう!

答えて

32

私は前に同じ問題がありました! そして、私はますますAJAX重いアプリケーションをやっているので、私はDjango ApplicationChrome extensionを一緒にリリースし、その問題を正確に解決しました。

すべての情報はgithubリポジトリにあります。

+1

理由はわかりませんが、Chrome拡張機能はAjax呼び出しのデバッグ情報を表示できないようです(jQuery。get、jQuery.getJson、...) –

+0

@PetrPeller最新のdjango-debug-panelパッケージをインストールしましたか?以前のバージョンでは、クリックジャッキ保護が有効になっているときに問題が発生しました。それでも動作しない場合は、より多くの情報(Djangoのバージョン、コードの例など)でgithubの問題を開いてください。 – recamshak

+0

'pip install django-debug-panel'を使用してインストールしました...もっと調査してみましょうあなたはGitHubで知っている –

4

Ddt自体が応答にプラグインされます。つまり、AJAX要求のパネルを参照する標準的な方法はありません。また、AJAXレスポンスはJSON形式にすることができます。これにより、ddtをプラグインできなくなります。

個人的には、ddtの出力をテキストファイルに記録する方法がありますか、またはクライアントがAJAX要求ハンドラの内部で動作し、サーバーにデータを送信するクライアントサーバーアーキテクチャをサポートしていますか?私はそこに十数個のクローンが存在するので、何が可能かはわかりません。

+0

確かに、ほとんどのプロファイラやデバッガは、(サーバからクライアントにデータを送信するためにヘッダーを使用)、およびそれを表示するブラウザ拡張機能。あなたの答えとDDTがまだこの機能を持っていないので3年経っています:) –

4

最近この問題が発生しました。クイック・アンド・ダーティー・ビー・ワーキング・ソリューションは、同じコードをフレキシブルにするためにいくつかのHTMLビューを追加するだけでした。例えばので

、私は私のウェブサイトの時間の90%は/ search_for_bookへのAJAX呼び出しに費やされていることNewRelicで見ることができれば、タイトル=、私のコードは次のようになります?

views.py: 

def search_for_book(request, title): 
    data = _search_for_book(title) 
    return json_response(data) 

def test_search_for_book(request, title): 
    data = _search_for_book(title) 
    return http_response(data) 

ボトルネックのどこかにあります。_search_for_bookコード。私たちがそれをajaxと呼ぶかどうかは、非効率性を診断することとは無関係です(私の場合、少なくともYMMV)

10

私はを書いています。これはDjango Debug Toolbarに追加して、現在のリクエスト以外のリクエスト(AJAXリクエストを含む)を表示することができます。


PIPを経由してインストールします。settings.py

pip install git+https://github.com/djsutho/django-debug-toolbar-request-history.git 


'ddt_request_history.panels.request_history.RequestHistoryPanel'例えばDEBUG_TOOLBAR_PANELSに追加します。

DEBUG_TOOLBAR_PANELS = [ 
    'ddt_request_history.panels.request_history.RequestHistoryPanel', # Here it is 
    'debug_toolbar.panels.versions.VersionsPanel', 
    'debug_toolbar.panels.timer.TimerPanel', 
    'debug_toolbar.panels.settings.SettingsPanel', 
    'debug_toolbar.panels.headers.HeadersPanel', 
    'debug_toolbar.panels.request.RequestPanel', 
    'debug_toolbar.panels.sql.SQLPanel', 
    'debug_toolbar.panels.templates.TemplatesPanel', 
    'debug_toolbar.panels.staticfiles.StaticFilesPanel', 
    'debug_toolbar.panels.cache.CachePanel', 
    'debug_toolbar.panels.signals.SignalsPanel', 
    'debug_toolbar.panels.logging.LoggingPanel', 
    'debug_toolbar.panels.redirects.RedirectsPanel', 
    'debug_toolbar.panels.profiling.ProfilingPanel', 
] 


も(DEBUG_TOOLBAR_CONFIGSHOW_TOOLBAR_CALLBACKをオーバーライドし、AJAXリクエストを記録するにはsettings.py)例:まだ可能JSONレスポンスを維持しながら

DEBUG_TOOLBAR_CONFIG = { 
    'SHOW_TOOLBAR_CALLBACK': 'ddt_request_history.panels.request_history.allow_ajax', 
} 
関連する問題