Django                
            Verwaltungsbefehle
        
        
            
    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,
daemonanstelle vonmanagement commandszu erstellen.
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.
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