[PYTHON] Tauche ein in den Django Custom Befehl [1]

Einführung

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.

Inhaltsverzeichnis

  1. Was ist ein benutzerdefinierter Django-Befehl?
  2. Vorbereitung für die Verwendung benutzerdefinierter Befehle
  3. So erstellen Sie einen benutzerdefinierten Befehl
  4. Benutzerdefinierter Befehlsablauf
  5. Passen Sie benutzerdefinierte Befehle an
  6. Zusammenfassung

1. Was ist ein benutzerdefinierter Django-Befehl?

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.

2. Vorbereitung für die Verwendung benutzerdefinierter Befehle

(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

3. So erstellen Sie einen benutzerdefinierten Befehl

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

4. Benutzerdefinierter Befehlsablauf

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.

  1. Führen Sie `` `python manage.py customcommand``` aus

  2. Rufen Sie die Command-Klasse auf

  3. run_from_argv-Methode

  4. create_parser-Methode

  5. Methode add_arguments

  6. parse_args-Methode

  7. Methode ausführen

  8. 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.

4. create_parser-Methode

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

5. Methode add_arguments

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

Argument hinzufügen

Eine kurze Zusammenfassung der Verwendung von ArgumentParser Es wurde in diesem Artikel ausführlich erklärt.

6. Zusammenfassung

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

Tauche ein in den Django Custom Befehl [1]
Erstellen Sie benutzerdefinierte Django-Befehle und führen Sie sie über die Befehlszeile aus
Django + Docker-Befehl
Legen Sie die von django hochgeladene Datei in MinIO ab
Über den Servicebefehl
[Django] Ändern Sie die Standard-IP-Adresse des Befehls runserver
Installieren Sie den Befehl pip
[Django] Benennen Sie das Projekt um
Einstellungen für die Vervollständigung des Django-Befehls
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
Fertigeranwendung - In Projekt integrieren
Klonen Sie mit dem Befehl dd
Beschleunigen Sie den Befehl netstat
Bis die Shell den Befehl findet
[Lernnotiz] Zusammenfassung des Django-Befehls