65 votes

Comment utiliser la barre d'outils Django-debug-tool sur les appels AJAX?

Je suis curieux de savoir si il y a un moyen raisonnable d'utiliser le (génial) django-debug-toolbar avec des requêtes AJAX.

Par exemple, j'utilise jQuery $.obtenir avec un tas de paramètres à frapper un Django d'URL et de le charger en ligne. Si j'ai une erreur avec ça, ce n'est pas inscrite sur la barre d'outils. Je ne peux pas l'utiliser en copiant l'URL AJAX parce que le DDT s'attache à la balise body de la réponse, et il n'aurait pas de sens d'être, y compris le corps des balises avec les réponses AJAX.

N'importe quelle direction serait utile! Merci!

35voto

djsutho Points 173

Voici une autre solution: Panneau d’historique des demandes pour la barre d’outils de débogage de Django .

Il doit être ajouté en tant que panneau à Django Debug Toolbar et le paramètre SHOW_TOOLBAR_CALLBACK doit être modifié pour enregistrer les demandes AJAX (voir le fichier LISEZMOI pour plus de détails).

34voto

recamshak Points 444

J'ai déjà eu le même poblème! Et comme je fais de plus en plus d'applications lourdes AJAX, j'ai publié une application Django et une extension Chrome qui ont résolu exactement ce problème.

Toutes les informations sont dans le référentiel github.

7voto

Rachel Points 636

J'ai atteint ce problème récemment. Mon quick-n-sale-mais-solution de travail était juste pour ajouter un peu de HTML vues à la flexion du même code.

Ainsi, par exemple, si je peux voir dans NewRelic que 90% de mon site de temps est passé à un appel ajax vers /search_for_book?title= mon code pourrait ressembler à ceci:

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)

Le goulot d'étranglement se situe quelque part dans le _search_for_book code; qu'on l'appelle en ajax n'est pas pertinent pour le diagnostic de son manque d'efficacité (dans mon cas, au moins; YMMV)

4voto

Tomasz Zielinski Points 9300

Ddt se connecte à une réponse, ce qui signifie qu'il n'y a pas de moyen standard de parcourir ses panneaux pour les demandes AJAX. En outre, la réponse AJAX peut être au format JSON, ce qui empêche le ddt de s'y connecter.

Personnellement, je trouverais un moyen de consigner la sortie de DDT dans un fichier texte, ou peut-être prend-il en charge une architecture client-serveur dans laquelle le client fonctionne dans le gestionnaire de requêtes AJAX et envoie des données au serveur? Je ne sais pas ce qui est possible, car il existe une douzaine de clones de DDT.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X