python - peticiones - ¿Cómo usar django-debug-toolbar en llamadas AJAX?
django debug toolbar not showing (4)
Tengo curiosidad por saber si hay una forma razonable de usar la (asombrosa) barra de herramientas de depuración de django con consultas AJAX.
Por ejemplo, uso jQuery $ .get con un conjunto de parámetros para presionar una URL de Django y cargarla en línea. Si tengo un error con eso, no está registrado en la barra de herramientas. Tampoco puedo usarlo al copiar la URL de AJAX porque DDT se adjunta a la etiqueta de cuerpo de la respuesta, y no tendría sentido incluir etiquetas de cuerpo con las respuestas de AJAX.
¡Cualquier dirección sería útil! ¡Gracias!
¡Yo tuve el mismo problema antes! Y a medida que hago más y más aplicaciones pesadas AJAX, lancé una aplicación Django y una extensión de Chrome que en conjunto resolvieron exactamente ese problema.
Toda la información está en el repositorio de Github.
Ddt se conecta a sí mismo en una respuesta, lo que significa que no hay una forma estándar de explorar sus paneles para la solicitud de AJAX. Además, la respuesta AJAX puede estar en formato JSON, lo que hace imposible que ddt se conecte.
Personalmente, encontraría una forma de registrar la salida ddt a un archivo de texto, o tal vez sea compatible con la arquitectura cliente-servidor en la que el cliente trabaja dentro del controlador de solicitudes AJAX y envía datos al servidor. No sé lo que es posible, ya que hay docenas de clones ddt por ahí.
Escribí el Panel de historial de solicitudes para la barra de herramientas de depuración Django que se puede agregar a la barra de herramientas de depuración de Django para ver solicitudes distintas a la actual (incluidas las solicitudes AJAX).
Instalar a través de pip:
pip install django-debug-toolbar-request-history
En settings.py agrega ''ddt_request_history.panels.request_history.RequestHistoryPanel''
a DEBUG_TOOLBAR_PANELS
por ejemplo:
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'',
]
He golpeado este problema recientemente. Mi solución rápida y sucia pero funcional era simplemente agregar algunas vistas HTML para doblar el mismo código.
Entonces, por ejemplo, si puedo ver en NewRelic que el 90% del tiempo de mi sitio web se gasta en una llamada ajax a / search_for_book? Title =, mi código podría verse así:
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)
El cuello de botella estará en algún lugar del código _search_for_book ; si lo llamamos por ajax es irrelevante para diagnosticar sus ineficiencias (en mi caso, al menos; YMMV)