Szukaj…


Wprowadzenie

Polecenia zarządzania to potężne i elastyczne skrypty, które mogą wykonywać działania na projekcie Django lub bazowej bazie danych. Oprócz różnych domyślnych poleceń można pisać własne!

W porównaniu ze zwykłymi skryptami w języku Python, użycie struktury poleceń zarządzania oznacza, że pewne żmudne prace instalacyjne są wykonywane automatycznie za kulisami.

Uwagi

Polecenia zarządzania można wywoływać z:

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] jeśli manage.py ma uprawnienia do wykonywania ( chmod +x manage.py )

Aby użyć poleceń zarządzania z Cronem:

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

Tworzenie i uruchamianie polecenia zarządzania

Aby wykonywać działania w Django przy użyciu wiersza polecenia lub innych usług (w których użytkownik / żądanie nie jest używany), możesz użyć management commands .

Moduły Django można importować w razie potrzeby.

Dla każdej komendy należy utworzyć osobny plik: myapp/management/commands/my_command.py
(Katalogi management i commands muszą mieć pusty plik __init__.py)

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

Tutaj nazwa klasy Command jest obowiązkowa, co rozszerza BaseCommand lub jedną z jego podklas.

Nazwa polecenia zarządzania to nazwa pliku zawierającego go. Aby uruchomić polecenie w powyższym przykładzie, użyj następujących w katalogu projektu:

python manage.py my_command

Pamiętaj, że uruchomienie polecenia może potrwać kilka sekund (z powodu importu modułów). Dlatego w niektórych przypadkach zaleca się tworzenie procesów daemon zamiast management commands .

Więcej na temat poleceń zarządzania

Uzyskaj listę istniejących poleceń

Listę dostępnych poleceń można uzyskać w następujący sposób:

>>> python manage.py help

Jeśli nie rozumiesz żadnego polecenia lub szukasz opcjonalnych argumentów, możesz użyć argumentu -h w ten sposób

>>> python manage.py command_name -h

Tutaj nazwa_ polecenia będzie twoją pożądaną nazwą polecenia, pokaże ci tekst pomocy z polecenia.

>>> 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 dostępnych poleceń

Używanie django-admin zamiast manage.py

Możesz pozbyć się manage.py i zamiast tego użyć komendy django-admin . Aby to zrobić, musisz ręcznie zrobić to, co robi manage.py :

  • Dodaj ścieżkę projektu do PYTHONPATH
  • Ustaw DJANGO_SETTINGS_MODULE
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

Jest to szczególnie przydatne w virtualenv, w którym można ustawić te zmienne środowiskowe w skrypcie postactivate .

Zaletą polecenia django-admin jest to, że jest dostępny wszędzie tam, gdzie jest system plików.

Wbudowane polecenia zarządzania

Django zawiera szereg wbudowanych poleceń zarządzania, używając python manage.py [command] lub, gdy manage.py ma + prawa (wykonywalne) po prostu ./manage.py [command] . Oto niektóre z najczęściej używanych:

Uzyskaj listę wszystkich dostępnych poleceń

./manage.py help

Uruchom serwer Django na localhost: 8000; niezbędne do testów lokalnych

./manage.py runserver

Uruchom konsolę python (lub ipython, jeśli jest zainstalowany) z fabrycznie załadowanymi ustawieniami Django projektu (próba uzyskania dostępu do części projektu w terminalu python bez wykonania tej czynności zakończy się niepowodzeniem).

./manage.py shell

Utwórz nowy plik migracji bazy danych na podstawie zmian wprowadzonych w modelach. Zobacz migracje

./manage.py makemigrations

Zastosuj wszelkie niestosowane migracje do bieżącej bazy danych.

./manage.py migrate

Uruchom pakiet testowy swojego projektu. Zobacz Testowanie jednostek

./manage.py test

Weź wszystkie pliki statyczne swojego projektu i umieść je w folderze określonym w STATIC_ROOT aby mogły być obsługiwane w produkcji.

./manage.py collectstatic

Pozwól na utworzenie superużytkownika.

./manage.py createsuperuser

Zmień hasło określonego użytkownika.

./manage.py changepassword username

Pełna lista dostępnych poleceń



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow