Sök…


Introduktion

Hanteringskommandon är kraftfulla och flexibla skript som kan utföra åtgärder i ditt Django-projekt eller den underliggande databasen. Förutom olika standardkommandon är det möjligt att skriva egna!

Jämfört med vanliga Python-skript innebär användning av kommandorammet för hantering att något tråkigt installationsarbete automatiskt görs för dig bakom kulisserna.

Anmärkningar

Hanteringskommandon kan anropas antingen från:

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

Så här använder du hanteringskommandon med Cron:

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

Skapa och driva en ledningskommando

För att utföra åtgärder i Django med hjälp av kommandoraden eller andra tjänster (där användaren / begäran inte används) kan du använda management commands .

Django-moduler kan importeras efter behov.

För varje kommando behöver en separat fil skapas: myapp/management/commands/my_command.py
( management och commands måste ha en tom __init__.py-fil)

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()

Här är klassnamn kommando obligatoriskt som utökar BaseCommand eller en av dess underklasser.

Namnet på hanteringskommandot är namnet på filen som innehåller den. För att köra kommandot i exemplet ovan använder du följande i din projektkatalog:

python manage.py my_command

Observera att det kan ta några sekunder att starta ett kommando (på grund av importen av modulerna). Så i vissa fall rekommenderas det att skapa daemon istället för management commands .

Mer om ledningskommandon

Hämta lista över befintliga kommandon

Du kan få en lista över tillgängliga kommandon på följande sätt:

>>> python manage.py help

Om du inte förstår något kommando eller letar efter valfria argument kan du använda -h- argument som det här

>>> python manage.py command_name -h

Här kommer kommandonamn att vara din önskan kommandonamn, detta visar dig hjälptext från kommandot.

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

Lista över tillgängligt kommando

Med django-admin istället för manage.py

Du kan bli av med manage.py och använda django-admin istället. För att göra det måste du manuellt göra det som manage.py gör:

  • Lägg till din projektväg till din PYTHONPATH
  • Ställ in DJANGO_SETTINGS_MODULE
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

Detta är särskilt användbart i en virtualenv där du kan ställa in dessa miljövariabler i skriptet postactivate .

django-admin kommandot har fördelen att det är tillgängligt var du än befinner dig i ditt filsystem.

Builtin Management-kommandon

Django kommer med ett antal inbyggda hanteringskommandon, med hjälp av python manage.py [command] eller, när manage.py har + x (körbara) rättigheter helt enkelt ./manage.py [command] . Följande är några av de mest använda:

Få en lista över alla tillgängliga kommandon

./manage.py help

Kör din Django-server på localhost: 8000; viktigt för lokal testning

./manage.py runserver

Kör en python (eller ipython om installerad) konsol med Django-inställningarna för ditt projekt förinstallerade (försöker komma åt delar av ditt projekt i en pythonterminal utan att göra detta kommer att misslyckas).

./manage.py shell

Skapa en ny databasmigreringsfil baserad på de ändringar du har gjort i dina modeller. Se Migrationer

./manage.py makemigrations

Tillämpa eventuella otillåtna migrationer i den aktuella databasen.

./manage.py migrate

Kör ditt projekts testsvit. Se enhetstestning

./manage.py test

Ta alla de statiska filerna i ditt projekt och lägg dem i mappen som anges i STATIC_ROOT så att de kan serveras i produktion.

./manage.py collectstatic

Låt skapa superanvändare.

./manage.py createsuperuser

Ändra lösenordet för en specificerad användare.

./manage.py changepassword username

Fullständig lista över tillgängliga kommandon



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow