Suche…


Einführung

Verwaltungsbefehle sind leistungsstarke und flexible Skripts, die Aktionen für Ihr Django-Projekt oder die zugrunde liegende Datenbank ausführen können. Neben verschiedenen Standardbefehlen können Sie auch eigene Befehle schreiben!

Im Vergleich zu regulären Python-Skripts bedeutet die Verwendung des Verwaltungsbefehls-Frameworks, dass hinter den Kulissen automatisch einige mühsame Einstellungsarbeiten für Sie erledigt werden.

Bemerkungen

Verwaltungsbefehle können aufgerufen werden von:

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] wenn manage.py über Ausführungsberechtigungen verfügt ( chmod +x manage.py )

So verwenden Sie Verwaltungsbefehle mit Cron:

*/10 * * * * pythonuser /var/www/dev/env/bin/python /var/www/dev/manage.py <command> [options] > /dev/null

Erstellen und Ausführen eines Verwaltungsbefehls

Um Aktionen in Django über die Befehlszeile oder andere Dienste (bei denen der Benutzer / die Anforderung nicht verwendet wird) management commands , können Sie die management commands .

Django-Module können bei Bedarf importiert werden.

Für jeden Befehl muss eine separate Datei erstellt werden: myapp/management/commands/my_command.py
(Die management und commands Verzeichnisse müssen eine leere Datei __init__.py haben)

from django.core.management.base import BaseCommand, CommandError

# import additional classes/modules as needed
# from myapp.models import Book

class Command(BaseCommand):
    help = 'My custom django management command'

    def add_arguments(self, parser):
       parser.add_argument('book_id', nargs='+', type=int)
       parser.add_argument('author' , nargs='+', type=str)

    def handle(self, *args, **options):
       bookid = options['book_id'] 
       author = options['author']
       # Your code goes here
        
        # For example:
        # books = Book.objects.filter(author="bob")
        # for book in books:
        #    book.name = "Bob"
        #    book.save()

Hier ist der Klassenname Command obligatorisch, der BaseCommand oder eine seiner Unterklassen erweitert.

Der Name des Verwaltungsbefehls ist der Name der Datei, die ihn enthält. Um den Befehl im obigen Beispiel auszuführen, verwenden Sie Folgendes in Ihrem Projektverzeichnis:

python manage.py my_command

Beachten Sie, dass das Starten eines Befehls einige Sekunden dauern kann (aufgrund des Imports der Module). In einigen Fällen wird daher empfohlen, daemon anstelle von management commands zu erstellen.

Mehr zu Verwaltungsbefehlen

Liste der vorhandenen Befehle abrufen

Sie können eine Liste der verfügbaren Befehle auf folgende Weise erhalten:

>>> python manage.py help

Wenn Sie keinen Befehl verstehen oder nach optionalen Argumenten suchen, können Sie das Argument -h wie folgt verwenden

>>> python manage.py command_name -h

Hier wird Befehlsname Ihr Wunschbefehlsname sein, der Hilfetext des Befehls wird angezeigt.

>>> python manage.py runserver -h          
>>> usage: manage.py runserver [-h] [--version] [-v {0,1,2,3}]
                           [--settings SETTINGS] [--pythonpath PYTHONPATH]
                           [--traceback] [--no-color] [--ipv6] [--nothreading]
                           [--noreload] [--nostatic] [--insecure]
                           [addrport]

Starts a lightweight Web server for development and also serves static files.

positional arguments:
  addrport              Optional port number, or ipaddr:port

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v {0,1,2,3}, --verbosity {0,1,2,3}
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on CommandError exceptions
  --no-color            Don't colorize the command output.
  --ipv6, -6            Tells Django to use an IPv6 address.
  --nothreading         Tells Django to NOT use threading.
  --noreload            Tells Django to NOT use the auto-reloader.
  --nostatic            Tells Django to NOT automatically serve static files
                        at STATIC_URL.
  --insecure            Allows serving static files even if DEBUG is False.

Liste der verfügbaren Befehle

Verwendung von django-admin anstelle von manage.py

Sie können manage.py loswerden und stattdessen den Befehl django-admin verwenden. Dazu müssen Sie manuell tun, was manage.py macht:

  • Fügen Sie Ihren Projektpfad zu Ihrem PYTHONPATH hinzu
  • Stellen Sie das DJANGO_SETTINGS_MODULE ein
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

Dies ist besonders nützlich in einer virtuellen Umgebung, in der Sie diese Umgebungsvariablen im postactivate Skript postactivate .

django-admin Befehl django-admin hat den Vorteil, dass Sie überall auf Ihrem Dateisystem verfügbar sind.

Integrierte Verwaltungsbefehle

Django verfügt über eine Reihe von integrierten Verwaltungsbefehlen, die python manage.py [command] oder wenn manage.py + x (ausführbare) Rechte hat, einfach ./manage.py [command] . Nachfolgend einige der am häufigsten verwendeten:

Rufen Sie eine Liste aller verfügbaren Befehle ab

./manage.py help

Führen Sie Ihren Django-Server auf localhost aus: 8000; unverzichtbar für lokale Tests

./manage.py runserver

Führen Sie eine Python-Konsole (oder, falls installiert, eine IPython-Konsole) mit den Django-Einstellungen Ihres Projekts vor (wenn Sie versuchen, auf Teile Ihres Projekts in einem Python-Terminal zuzugreifen, ohne dass dies fehlschlägt, schlägt dies fehl).

./manage.py shell

Erstellen Sie eine neue Datenbankmigrationsdatei basierend auf den Änderungen, die Sie an Ihren Modellen vorgenommen haben. Siehe Migrationen

./manage.py makemigrations

Wenden Sie alle nicht verwendeten Migrationen auf die aktuelle Datenbank an.

./manage.py migrate

Führen Sie die Testsuite Ihres Projekts aus. Siehe Gerätetest

./manage.py test

Nehmen Sie alle statischen Dateien Ihres Projekts und STATIC_ROOT Sie sie in dem in STATIC_ROOT angegebenen Ordner STATIC_ROOT damit sie in der Produktion STATIC_ROOT werden können.

./manage.py collectstatic

Erlaube, Superuser zu erstellen.

./manage.py createsuperuser

Ändern Sie das Passwort eines angegebenen Benutzers.

./manage.py changepassword username

Vollständige Liste der verfügbaren Befehle



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow