Zoeken…


Invoering

Beheeropdrachten zijn krachtige en flexibele scripts die acties kunnen uitvoeren op uw Django-project of de onderliggende database. Naast verschillende standaardopdrachten is het mogelijk om er zelf een te schrijven!

Vergeleken met reguliere Python-scripts betekent het gebruik van het management-opdrachtraamwerk dat achter de schermen automatisch wat saai werk voor u wordt gedaan.

Opmerkingen

Beheeropdrachten kunnen worden opgeroepen vanuit:

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] als manage.py uitvoeringsmachtigingen heeft ( chmod +x manage.py )

Beheeropdrachten gebruiken met Cron:

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

Een beheeropdracht maken en uitvoeren

Als u acties in Django wilt uitvoeren met de opdrachtregel of andere services (waarbij de gebruiker / het verzoek niet wordt gebruikt), kunt u de management commands .

Django-modules kunnen naar behoefte worden geïmporteerd.

Voor elke opdracht moet een afzonderlijk bestand worden gemaakt: myapp/management/commands/my_command.py
(De mappen voor management en commands moeten een leeg __init__.py-bestand hebben)

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 is klassennaam Command verplicht, wat BaseCommand of een van de subklassen ervan uitbreidt.

De naam van de beheeropdracht is de naam van het bestand dat deze bevat. Om de opdracht in het bovenstaande voorbeeld uit te voeren, gebruikt u het volgende in uw projectmap:

python manage.py my_command

Merk op dat het starten van een opdracht enkele seconden kan duren (vanwege het importeren van de modules). Daarom wordt in sommige gevallen geadviseerd om daemon processen te maken in plaats van management commands .

Meer over beheeropdrachten

Krijg een lijst met bestaande opdrachten

U kunt op de volgende manier een lijst met beschikbare opdrachten krijgen:

>>> python manage.py help

Als u geen opdracht begrijpt of optionele argumenten zoekt, kunt u dit argument -h gebruiken

>>> python manage.py command_name -h

Hier zal command_name de naam van uw gewenste commando zijn, dit laat u de helptekst van het commando zien.

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

Lijst met beschikbare opdracht

Gebruik django-admin in plaats van manage.py

Je kunt manage.py en in plaats daarvan de opdracht django-admin gebruiken. Om dit te doen, moet u handmatig doen wat manage.py doet:

  • Voeg uw projectpad toe aan uw PYTHONPATH
  • Stel de DJANGO_SETTINGS_MODULE in
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

Dit is vooral handig in een virtualenv waar u deze omgevingsvariabelen kunt instellen in het postactivate .

django-admin commando heeft het voordeel dat het overal beschikbaar is op uw bestandssysteem.

Ingebouwde beheeropdrachten

Django wordt geleverd met een aantal ingebouwde beheeropdrachten, met behulp van python manage.py [command] of, als manage.py + x (uitvoerbare) rechten heeft, eenvoudig ./manage.py [command] . De volgende zijn enkele van de meest gebruikte:

Ontvang een lijst met alle beschikbare opdrachten

./manage.py help

Voer uw Django-server uit op localhost: 8000; essentieel voor lokale testen

./manage.py runserver

Voer een python (of ipython indien geïnstalleerd) console uit met de Django-instellingen van uw project vooraf geladen (proberen toegang te krijgen tot delen van uw project in een python-terminal zonder dit te doen zal mislukken).

./manage.py shell

Maak een nieuw database-migratiebestand op basis van de wijzigingen die u in uw modellen hebt aangebracht. Zie migratie

./manage.py makemigrations

Pas niet-toegepaste migraties toe op de huidige database.

./manage.py migrate

Voer het testpakket van uw project uit. Zie Eenheidstesten

./manage.py test

Neem alle statische bestanden van uw project en zet ze in de map die is opgegeven in STATIC_ROOT zodat ze in productie kunnen worden geserveerd.

./manage.py collectstatic

Sta toe om superuser te creëren.

./manage.py createsuperuser

Wijzig het wachtwoord van een opgegeven gebruiker.

./manage.py changepassword username

Volledige lijst met beschikbare opdrachten



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow