127 Stimmen

Wie lädt man Module in der Django-Shell neu?

Ich arbeite mit Django und benutze die Django-Shell ständig. Der lästige Teil ist, dass während der Django-Server auf Code-Änderungen neu geladen wird, die Shell nicht, so dass jedes Mal, wenn ich eine Änderung an einer Methode, die ich teste, muss ich die Shell beenden und neu starten, re-importieren alle Module, die ich brauche, reinitialisieren alle Variablen, die ich brauche usw. Die iPython-Historie erspart mir zwar eine Menge Tipparbeit, aber das ist immer noch ein Problem. Gibt es eine Möglichkeit, die django shell automatisch neu zu laden, so wie es der django development server tut?

Ich weiß über reload() Bescheid, aber ich importiere viele Modelle und verwende im Allgemeinen from app.models import * Syntax, daher ist reload() keine große Hilfe.

2 Stimmen

Sie sollten diese Frage aktualisieren und die Antwort "django-extensions" als richtig markieren.

1 Stimmen

Erst wenn es für mich tatsächlich funktioniert. Ich habe die Erweiterungen installiert, aber keiner meiner Codes wird automatisch neu geladen, und in den shell_plus-Dokumenten wird das automatische Laden nicht erwähnt. Es scheint, dass es einen Reloader im runserver_plus-Befehl gibt, aber das ist nicht das, wonach ich suche.

1voto

littlegreen Punkte 7072

Anstatt Befehle über die Django-Shell auszuführen, können Sie einen Verwaltungsbefehl einrichten so und wiederholen Sie das jedes Mal.

0voto

Akshay Vijay Jain Punkte 8985
import test  // test only has x defined
test.x       // prints 3, now add y = 4 in test.py
test.y       // error, test does not have attribute y

Lösung Verwenden Sie reload von importlib wie folgt

from importlib import reload
import test // test only has x defined
test.x // prints 3, now add y = 4 in test.py
test.y // error
reload(test)
test.y // prints 4

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