Dies ist der erste Artikel. Ich beschloss, das Gelernte auf unvergessliche Weise verlassen zu wollen.
Vor kurzem lerne ich unter dem Motto, Django tief zu beherrschen. Dieser Artikel ist ein Sprungbrett, um mehr über die benutzerdefinierten Befehle von Django zu erfahren.
Es ist ein Mechanismus, der Python-Skripte mit CUI ausführen kann.
・ Verschiedene Funktionen von Django (DB ORM usw.) können verwendet werden ・ Einfache Befehlsverwaltung
Es gibt Vorteile wie. Letzteres ist
-Liste verfügbare Befehle auf-
python manage.py --help
[shop]
customcommand
cusyomcommand2
...
-Show benutzerdefinierte Befehlsbeschreibung-
python manage.py customcommand --help
usage: manage.py customcommand2 [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS]
[--pythonpath PYTHONPATH] [--traceback]
[--no-color] [--force-color] [--skip-checks]
Funktion zum Speichern von Daten
Das ist möglich.
(1) Erstellen Sie eine Anwendung (diesmal erstellt mit dem Namensskript)
python manage.py startapp script
(2) Erstellen Sie eine hierarchische Struktur von Management / Befehlen
script/
├── management/
├── commands/
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py
(3) Fügen Sie die Skriptdatei unter Befehle ein Erstellen Sie es hier mit dem Namen customcommand.py
Wenn Sie den Kommentar der baseBaseCommand-Klasse lesen, heißt es: "Wenn Sie den Ablauf der Befehlsausführung nicht ändern möchten, können Sie eine untergeordnete Klasse namens Command verwenden, die die BaseCommand-Klasse erbt." Ich denke, dass die folgende Konfiguration in Ordnung ist.
customcommand.py
class Command(BaseCommand):
#Beschreiben Sie den Inhalt, den Sie im Skript verarbeiten möchten, in der überschriebenen Handle-Funktion
def handle(self, *args, **options):
pass
Dies ist eine Geschichte darüber, wie der benutzerdefinierte Befehl des Hauptthemas aufgerufen wird und welche Art von Funktion für die Verarbeitung verwendet wird.
Der Verarbeitungsablauf ist wie folgt.
Führen Sie `` `python manage.py customcommand``` aus
Rufen Sie die Command-Klasse auf
run_from_argv-Methode
create_parser-Methode
Methode add_arguments
parse_args-Methode
Methode ausführen
Handle-Methode
Ich habe das Bild erhalten, dass eine Funktion namens run_from_argv den gesamten Verarbeitungsablauf anzeigt und eine detaillierte Verarbeitung in anderen Funktionen durchführt. Daher wird das Konzept der detaillierten Verarbeitung nach 4 nachstehend beschrieben.
Argumente haben die Form [Befehlszeilenargument [0], Befehlszeilenargument [1]]. -> In diesem Beispiel ['manage.py', 'customcommand']
Schneiden Sie zuerst den Dateinamen von manage.py aus. -> Wenn manage.py mit dem vollständigen Pfad beschrieben wird, wird hier nur manage.py abgerufen.
Erstellen Sie als Nächstes ein Parser-Objekt. Das Parser-Objekt weist die folgenden Attribute auf. -prog: "manage.py customcommand" (durch Leerzeichen getrennte Befehle) -Beschreibung: Hilfeanweisung (erhalten von self.help) -formatter_class: (vorgegebene Django-Hilfeoption wie --version) Eine solche
Fügen Sie dem Parser-Objekt das Argument hinzu, das Sie im Prozess verwenden möchten. Zum Beispiel
parser.add_argument('parameters', nargs='+', type=int)
Dann können Sie ein oder mehrere Argumente vom Typ int erzwingen.
-> `` `python manage.py customcommand 3 5``` etc.
### 6. parse_args-Methode
Überprüfen Sie hier das Format der tatsächlich eingegebenen Befehlsgruppe.
・ Wenn Djangos Hilfeoption wie --version verfügbar ist, beenden Sie den Vorgang hier.
-Wenn das Eingabeformat unterschiedlich ist, wird das erwartete Argument (Inhalt des Parsers) standardmäßig ausgegeben.
### 7,8. Methode ausführen, Methode behandeln
Erst wenn die Formatprüfung im Prozess von 6 übergeben wird, wird sie an die Ausführungsmethode und an die Handle-Methode übergeben.
* Wenn im Verlauf von 5 ein Argument hinzugefügt wird, kann auf das Optionsargument der Handle-Methode verwiesen werden.
# 5. Passen Sie benutzerdefinierte Befehle an
### Hilfeanweisung für Befehl hinzufügen
```python
help = 'Funktion zu'
OK, wenn Sie das Hilfeargument definieren
Eine kurze Zusammenfassung der Verwendung von ArgumentParser Es wurde in diesem Artikel ausführlich erklärt.
Ich habe viel gesucht, aber ich hatte den Eindruck, dass es in Ordnung wäre, wenn ich die Handle-Funktion, die Funktion add_arguments und die Hilfe hinzufügen würde. Das Konzept des Analyseobjekts scheint weit verbreitet für den Umgang mit variablen Argumenten zu sein, also habe ich es gelernt.
Recommended Posts