Ich habe gerade Django installiert und mache das Tutorial auf ihrer Website.
Ich befolge ihre Anweisungen in der Befehlszeile und sie arbeiten, aber ich frage mich warum?
Zum Beispiel können Sie auf den Befehl 'manage.py startapp xyz' zugreifen und es würde ein Paket erstellen, aber wenn ich in manage.py nachschaue, enthält es nur den folgenden Code (hinzugefügt von django, habe ich nicht berührt manage.py)
%Vor%Ich sehe keine Methode für startapp in manage.py oder anderswo. Ich bin mir nicht sicher, ob dies djangospezifisch ist oder ob es eine grundlegende Lücke in meinem Python-Wissen gibt. Danke.
Sie müssen im django.core.management
-Paket nachsehen; Die Funktion execute_from_command_line()
akzeptiert die Befehlszeile sys.argv
Parameter und nimmt es von dort.
Wenn Sie manage.py startapp xyz
in der Befehlszeile eingeben, wird sys.argv
auf ['manage.py', 'startapp', 'xyz']
gesetzt.
Diese werden an eine ManagementUtility
-Instanz , die eine Methode .execute()
hat, um das zu tun tatsächliches Parsen.
Das gesamte Paket django.core.management
ist modular; Das .commands
Unterpaket enthält die verschiedenen Standardbefehle für manage.py
. Werkzeug. django.core.management.commands.startapp
behandelt beispielsweise den Unterbefehl startapp
.