2010-11-25 12 views
0

Ich bin immer noch in der Entwicklungsphase einer Django App. Bevor ich meine views.py schreibe, teste ich sie aus, um zu sehen, ob meine Modelle korrekt definiert sind. Dies tue ich es im Terminal vonTesten Sie kleine Schnipsel von Django Code

python manage.py shell

Aufruf Aber ach so oft mache ich einige Syntaxfehler Auffordern mir die Schale alles abbrechen ctrl-D & erneut eingeben. Dieser Prozess dauert ewig. Es wäre besser, wenn ich alles in eine Datei schreiben könnte, nur für meine Versuche &, wenn alles gut ist, kopieren Sie es in views.py.

Was ist der Prozess dafür? Ist es so einfach wie das Erstellen eines trial.py in meinem App-Verzeichnis. Muss ich das Django env nicht importieren? Was ist der beste Weg, dies zu tun?

+3

Sie sagen mir, dass Sie jedes Stück Ihres Codes im Python-Interpreter schreiben, bevor Sie es in Ihre Anwendung einfügen? – Falmarri

+0

run python manage.py sql app_name –

+1

"alles neu eingeben"? Haben Sie schon einmal von einer "Datei" gehört, die Ihre Quelle enthält? Das Django-Tutorial zeigt einen guten Weg, dies zu tun. Warum folgst du nicht dem Django-Tutorial? –

Antwort

2

Mit allen Mitteln erstellen trial.py für einfaches Experimentieren, dann nach tun

python manage.py shell 

Sie

tun können
>>> import trial 

und dann rufen Sie den Code loszuzulegen im Versuch, direkt von der Aufforderung, z

trial.myfunc() 

Wenn Sie die Dinge ändern müssen, können Sie einfach Ihre geändert trial.py speichern und

reload(trial) 

Natürlich tun, können Sie alle vorhandenen Objekte in der interaktiven Sitzung, um neu erstellen müssen, um zu machen Verwendung Ihrer Änderungen.

Dies sollte als Ergänzung zu Schreibeinheit Tests (nach Jani Antwort) gesehen werden, aber ich finde diesen Ansatz nützlich für das Ausprobieren mit iterativen Verfeinerung.

+1

Reloading-Modelle funktioniert nicht einfach so: http://StackOverflow.com/Questions/890924/How-Do-You-Reload-A-Django-Model-Module-use-the-interactive-interpreter-via-ma/3466579 # 3466579. –

+0

@Tomasz: Einverstanden, ich dachte an einfache Python-Objekte, wenn ich erwähnte, Objekte neu zu erstellen ... Ihre verknüpfte Antwort füllt das fehlende Stück aus. –

5

Wie wäre es mit Komponententests? Sie können sie einfach mit einem Befehl ausführen. Sie können sich wahrscheinlich die durch das Lese django manual chapter on testing

+0

Komponententests sind nicht das Gleiche wie das Testen von Funktionen in der Shell - stellen Sie sich vor, dass Sie wissen, dass Ihre Funktionen falsch sind, aber um einen Fehler zu erkennen, müssen Sie Ergebnisse sehen, also wie werden Sie es mit Komponententests machen? – ffriend

+0

Wenn ein Test fehlschlägt, sagt Ihnen nicht, was in Ihrer Funktion nicht funktioniert, dann ist es kein genau genug Test. –

1

Erstellen Sie Ihre Datei-für-Tests im Django-Projektverzeichnis und fügen Pfad zu Ihrem Projekt Variable env:

import sys 
sys.path.append(os.path.realpath(os.path.dirname(__file__))) 

Danach werden Sie ein beliebiges Modul aus dem Projekt (zB Modelle importieren können von models.py oder nur Funktionen von views.py) und verwenden Sie Ihre Lieblings-IDE mit seinem Editor und Shell.

1

Für einfachere Fälle können Sie das django-extensions Add-on verwenden, das den Verwaltungsbefehl shell_plus enthält, der dem Standardbefehl shell ähnelt, aber alle Modelle vorlädt.

0

ich vor, auch dieses Problem hatte

können Sie ipython installieren könnte, die eine magische Funktion wie folgt aufgerufen hat:

% sparen.

Dies speichert, was Sie in eine Datei eingeben.

und ipython ist ein sehr charmantes Werkzeug, das den Platz von Standard Python Prompt perfekt nehmen kann. Es hat auch andere wunderbare Dinge!

Und in django, wenn Sie installieren ipython, wenn Sie Eingabe Python manage.py Shell,

es ipython direkt aufrufen wird.