657 Stimmen

Wie debuggt man in Django, auf die gute Art?

Also habe ich angefangen, Code zu lernen in Python und später Django . Die ersten Male war es schwer, Tracebacks zu betrachten und tatsächlich herauszufinden, was ich falsch gemacht habe und wo der Syntaxfehler lag. Inzwischen ist einige Zeit vergangen und ich denke, ich habe inzwischen eine gewisse Routine im Debuggen meines Django-Codes. Da ich das schon früh in meiner Programmierpraxis gemacht habe, habe ich mich hingesetzt und mich gefragt, ob die Art und Weise, wie ich das gemacht habe, ineffektiv war und ob man das schneller machen könnte. Normalerweise schaffe ich es, die Fehler in meinem Code zu finden und zu korrigieren, aber ich frage mich, ob ich es schneller machen sollte.

Ich benutze normalerweise nur die Debug-Informationen, die Django ausgibt, wenn sie aktiviert sind. Wenn die Dinge so enden, wie ich es mir gedacht habe, unterbreche ich den Codefluss oft mit einem Syntaxfehler und schaue mir die Variablen an diesem Punkt im Fluss an, um herauszufinden, wo der Code etwas anderes tut als das, was ich wollte.

Aber kann dies verbessert werden? Gibt es gute Tools oder bessere Möglichkeiten, Ihren Django-Code zu debuggen?

3 Stimmen

Ich verwende gerne django-debug-toolbar, es ist sehr praktisch

3 Stimmen

Oder verwenden Sie den in Visual Studio Code integrierten Python-Debugger, wie hier beschrieben code.visualstudio.com/docs/python/tutorial-django

2voto

user1144616 Punkte 1141

Wenn Sie Aptana für die Django-Entwicklung verwenden, sollten Sie dies beachten: http://www.youtube.com/watch?v=qQh-UQFltJQ

Wenn nicht, sollten Sie es verwenden.

2voto

Mark White Punkte 620

Nach meiner eigenen Erfahrung gibt es zwei Möglichkeiten:

  1. verwenden. ipdb der ein erweiterter Debugger wie pdb ist.

    import ipdb;ipdb.set_trace() o breakpoint() (ab python3.7)

  2. django shell verwenden, einfach den unten stehenden Befehl verwenden. Dies ist sehr hilfreich, wenn Sie eine neue Ansicht entwickeln.

    python manage.py shell

1voto

nitansh bareja Punkte 292

Ich empfehle dringend, PDB zu verwenden.

import pdb
pdb.set_trace()

Sie können alle Variablenwerte prüfen, in die Funktion einsteigen und vieles mehr. https://docs.python.org/2/library/pdb.html

für die Überprüfung der alle Arten von Anfrage, Antwort und Hits zu database.i bin mit django-debug-toolbar https://github.com/django-debug-toolbar/django-debug-toolbar

1voto

IanH Punkte 11

Wie bereits in anderen Beiträgen hier erwähnt - das Setzen von Haltepunkten in Ihrem Code und das Durchlaufen des Codes, um zu sehen, ob er sich so verhält, wie Sie es erwartet haben, ist ein guter Weg, um etwas wie Django zu lernen, bis Sie ein gutes Gefühl dafür haben, wie sich alles verhält - und was Ihr Code tut.

Dazu würde ich WingIde empfehlen. Genau wie andere erwähnte IDEs schön und einfach zu bedienen, schönes Layout und auch einfach zu setzen Haltepunkte bewerten / ändern Sie den Stapel usw. Perfekt für die Visualisierung, was Ihr Code tut, wie Sie Schritt durch sie. Ich bin ein großer Fan davon.

Ich benutze auch PyCharm - es hat eine ausgezeichnete statische Codeanalyse und kann manchmal helfen, Probleme zu erkennen, bevor man sie bemerkt.

Wie bereits erwähnt, ist django-debug-toolbar unerlässlich - https://github.com/django-debug-toolbar/django-debug-toolbar

Und obwohl es sich nicht ausdrücklich um ein Debugging- oder Analysewerkzeug handelt, ist eines meiner Lieblingswerkzeuge SQL-Druck-Middleware erhältlich bei Django Snippets unter https://djangosnippets.org/snippets/290/

Hier werden die SQL-Abfragen angezeigt, die Ihr View generiert hat. So erhalten Sie einen guten Eindruck davon, was der ORM tut und ob Ihre Abfragen effizient sind oder Sie Ihren Code überarbeiten müssen (oder Caching hinzufügen).

Ich finde es von unschätzbarem Wert, um die Abfrageleistung bei der Entwicklung und Fehlersuche in meiner Anwendung im Auge zu behalten.

Noch ein Tipp: Ich habe die Anwendung für meine Zwecke leicht modifiziert, um nur die Zusammenfassung und nicht die SQL-Anweisung anzuzeigen.... Ich verwende sie also immer beim Entwickeln und Testen. Außerdem habe ich hinzugefügt, dass eine zusätzliche Warnung angezeigt wird, wenn len(connection.queries) größer als ein vordefinierter Schwellenwert ist.

Wenn ich dann feststelle, dass etwas Schlechtes (in Bezug auf die Leistung oder die Anzahl der Abfragen) passiert, schalte ich die vollständige Anzeige der SQL-Anweisungen wieder ein, um genau zu sehen, was vor sich geht. Sehr praktisch, wenn Sie an einem großen Django-Projekt mit mehreren Entwicklern arbeiten.

1voto

Abdul Gaffar Punkte 141

Verwenden. pdb o ipdb . Der Unterschied zwischen diesen beiden ist, dass ipdb die automatische Vervollständigung unterstützt.

für pdb

import pdb
pdb.set_trace()

für ipdb

import ipdb
ipdb.set_trace()

Zum Ausführen einer neuen Zeile drücken Sie n Taste, zum Fortsetzen drücken Sie c Schlüssel. weitere Optionen prüfen, indem Sie help(pdb)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X