web-dev-qa-db-ja.com

AJAX呼び出しでDjango-debug-toolbarを使用する方法?

(驚くべき)Django-debug-toolbarをAJAXクエリで使用するための合理的な方法があるかどうか知りたいです。

たとえば、jQuery $ .getを一連のパラメータとともに使用して、Django URLをヒットし、インラインでロードします。エラーが発生した場合、ツールバーに登録されていません。 AJAXのURLをコピーして使用することもできません。DDTが応答のbodyタグに添付されているため、AJAXでbodyタグを含めても意味がありません。反応。

どんな方向でも参考になります!ありがとう!

57

以前にも同じ問題がありました!そして、ますますAJAX重いアプリケーションを実行しているので、私は Django Application および Chrome拡張 をリリースしました問題。

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

35
recamshak

Django Debug Toolbar のリクエスト履歴パネルを作成しましたDjango Debug Toolbarに追加して、現在のもの(AJAXリクエストを含む))。


pip経由でインストール:

pip install Django-debug-toolbar-request-history


settings.py'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',
]
17
djsutho

最近この問題に遭遇しました。私の素早い、汚い、しかし機能するソリューションは、同じコードを変更するためにいくつかのHTMLビューを追加することでした。

たとえば、Webサイトの時間の90%が/ search_for_book?title =への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)。

6
Rachel

Ddtはそれ自体を応答にプラグインします。つまり、AJAX要求のためにパネルを参照する標準的な方法はありません。また、AJAX応答はJSON形式にすることができます、それはddtがそれに接続することを不可能にします。

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

4