Ricerca…


introduzione

I comandi di gestione sono script potenti e flessibili che possono eseguire azioni sul progetto Django o sul database sottostante. Oltre ai vari comandi predefiniti, è possibile scrivere i propri!

Rispetto ai normali script Python, l'utilizzo del framework dei comandi di gestione significa che alcune noiose operazioni di configurazione vengono eseguite automaticamente dietro le quinte.

Osservazioni

I comandi di gestione possono essere chiamati da:

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] se manage.py ha permessi di esecuzione ( chmod +x manage.py )

Per usare i comandi di gestione con Cron:

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

Creazione ed esecuzione di un comando di gestione

Per eseguire azioni in Django utilizzando la riga di comando o altri servizi (in cui l'utente / richiesta non viene utilizzato), è possibile utilizzare i management commands .

I moduli Django possono essere importati secondo necessità.

Per ogni comando è necessario creare un file separato: myapp/management/commands/my_command.py
(Le directory di management e commands devono avere un file __init__.py vuoto)

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

Qui il nome della classe Command è obbligatorio che estende BaseCommand o una delle sue sottoclassi.

Il nome del comando di gestione è il nome del file che lo contiene. Per eseguire il comando nell'esempio precedente, utilizzare quanto segue nella directory del progetto:

python manage.py my_command

Si noti che l'avvio di un comando può richiedere alcuni secondi (a causa dell'importazione dei moduli). Quindi in alcuni casi si consiglia di creare processi daemon invece di management commands di management commands .

Maggiori informazioni sui comandi di gestione

Ottieni l'elenco dei comandi esistenti

È possibile ottenere l'elenco dei comandi disponibili seguendo la seguente procedura:

>>> python manage.py help

Se non capisci alcun comando o cerchi argomenti opzionali, puoi usare l'argomento -h come questo

>>> python manage.py command_name -h

Qui command_name sarà il tuo nome comando desiderato, questo ti mostrerà il testo di aiuto dal comando.

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

Elenco dei comandi disponibili

Utilizzando django-admin invece di manage.py

Puoi sbarazzarti di manage.py e usare invece il comando django-admin . Per fare ciò, dovrai fare manualmente ciò che manage.py fa:

  • Aggiungi il tuo percorso di progetto al tuo PYTHONPATH
  • Imposta il DJANGO_SETTINGS_MODULE
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

Ciò è particolarmente utile in una virtualizzazione in cui è possibile impostare queste variabili di ambiente nello script postactivate .

django-admin comando django-admin ha il vantaggio di essere disponibile ovunque tu sia sul tuo filesystem.

Comandi di gestione incorporati

Django viene fornito con una serie di comandi di gestione incorporati, usando python manage.py [command] o, quando manage.py ha diritti + x (eseguibili) semplicemente ./manage.py [command] . I seguenti sono alcuni dei più usati:

Ottieni un elenco di tutti i comandi disponibili

./manage.py help

Esegui il tuo server Django su localhost: 8000; essenziale per i test locali

./manage.py runserver

Esegui una console python (o ipython se installata) con le impostazioni Django del tuo progetto precaricato (il tentativo di accedere a parti del tuo progetto in un terminale python senza farlo fallirebbe).

./manage.py shell

Crea un nuovo file di migrazione del database in base alle modifiche apportate ai tuoi modelli. Vedi Migrazioni

./manage.py makemigrations

Applicare eventuali migrazioni non applicate al database corrente.

./manage.py migrate

Esegui la suite di test del tuo progetto. Vedi Test unitario

./manage.py test

Prendere tutti i file statici del progetto e inserirli nella cartella specificata in STATIC_ROOT modo che possano essere pubblicati in produzione.

./manage.py collectstatic

Permette di creare superutente.

./manage.py createsuperuser

Cambia la password di un utente specificato.

./manage.py changepassword username

Elenco completo dei comandi disponibili



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow