django-capo è una implementazione delle idee delineate nel mio post del blog su comandi di gestione Django. Con esso, è possibile specificare comandi in singole applicazioni e quindi eseguire utilizzando l'interfaccia della riga di comando djboss.
Installazione django-boss
Al momento, l'installazione avviene tramite easy_install django-boss o PIP installare django-boss. Gli unici prerequisiti sono argparse, la cui installazione è gestita da setuptools, e Django, che si dovrebbe avere installato da ora comunque.
Scrittura Comandi
I comandi sono definiti come istanze di djboss.commands.Command, presenti in un modulo comandi all'interno di un'applicazione installata. Per esempio, prendete il seguente layout di app:
echoapp /
| - __init__.py
| - Commands.py
`- Models.py
Il file è un commands.py modulo che può essere importato come echoapp.commands.
Con pittura
Quanto segue è un esempio completo di un file commands.py valida:
da djboss.commands importare *
Comando @
def ciao (args):
& Nbsp; "" "Stampa un cliché alla console." ""
& Nbsp; print "Ciao, mondo!"
Questo esempio utilizza il decoratore comando @ di dichiarare che la funzione è un comando django-boss. È possibile aggiungere argomenti ai comandi troppo; basta usare il decoratoreargument (assicurarsi che vengono dopo il comando @):
Comando @
argument ('- n', '--no-nuova linea', action = 'store_true',
& Nbsp; help = "non si aggiunge un ritorno a capo finale.")
def ciao (args):
& Nbsp; "" "Stampa un cliché alla console." ""
& Nbsp; se args.no_newline:
& nbsp; import sys
& Nbsp; sys.stdout.write ("Ciao, mondo")
& Nbsp; il resto:
& Nbsp; print "Ciao, mondo!"
Il decoratoreargument accetta qualunque argparse.ArgumentParser.add_argument () fa; consultare la documentazione argparse per ulteriori informazioni.
È anche possibile annotare i comandi dando argomenti chiave aCommand:
Command (name = "qualcosa", description = "Fa qualcosa.")
def fa_qualcosa (args):
& Nbsp; "" ". Fate qualcosa" ""
& Nbsp; print "qualcosa è stato fatto."
In questo caso, il comando si chiamerà "qualcosa" al posto del "qualcosa fare-" auto-generata, e la sua descrizione si discosta dal suo docstring. Per ulteriori informazioni su ciò che può essere passato a qui, consultare la documentazione argparse.ArgumentParser.
Senza pittura
L'API è molto simile senza decoratori. La classe di comando viene utilizzata per avvolgere le funzioni, e si può dare argomenti a parola chiave quando si invoca come concommand:
def Echo (args):
& Nbsp; ...
echo = Comando (eco, name = '...', description = '...')
Metodo s add_argument (); Aggiunta argomenti utilizza il metodo Command.add_argument (), che è solo un riferimento al generato sub-parser & rsquo:
def Echo (args):
& Nbsp; ...
echo = Comando (eco, name = '...', description = '...')
echo.add_argument ('- n', '--no-nuova linea', ...)
echo.add_argument ('parole', nargs = '*')
Esecuzione di comandi
I comandi vengono eseguiti tramite l'interfaccia a riga di comando djboss. Per questo per funzionare correttamente, è necessario una delle due cose:
* Una variabile ambiente DJANGO_SETTINGS_MODULE che si riferisce ad un modulo Python valida, importabili.
* Un valido, modulo impostazioni importabili nella directory di lavoro corrente.
Una volta che uno di questi è coperto, è possibile eseguirlo:
djboss --help
Utilizzo: djboss [-h] [-v] [LEVEL -l] COMANDO ...
Comandi di gestione django-capo Run.
argomenti opzionali:
& Nbsp; -h, --help mostra questo messaggio di aiuto ed esce
& Nbsp; -v, il numero di versione --version spettacolo del programma ed esce
& Nbsp; LEVEL -l, --log-level LEVEL
& Nbsp; Scegli un livello di log da DEBUG, INFO, WARN (default)
& Nbsp; o ERROR.
comandi:
& Nbsp; COMANDO
& Nbsp; eco Echo gli argomenti alla console.
& Nbsp; ciao Stampa un cliché per la console.
Per scoprire comandi secondari, djboss primi ritrovamenti e le importazioni vostre impostazioni Django.
La variabile di ambiente DJANGO_SETTINGS_MODULE ha la precedenza, ma se non specificato, djboss cercherà un modulo `Settings` nella directory corrente. I comandi devono essere definiti in un `modulo commands` di ogni app. djboss cercherà ciascuna delle vostre INSTALLED_APPS per i comandi di gestione.
Ogni sottocomando ottiene una opzione --help troppo:
djboss eco --help
utilizzo: djboss echo [-h] [-n] [parole [parole ...]]
Echo gli argomenti alla console.
argomenti posizionali:
& nbsp; parole
argomenti opzionali:
& Nbsp; -h, --help mostra questo messaggio di aiuto ed esce
& Nbsp; -n, --no-newline Non stampare un ritorno a capo dopo.
E poi si può eseguire:
djboss echo alcune parole qui
alcune parole qui
Più dello stesso:
djboss ciao --help
Utilizzo: djboss ciao [-h]
Stampa un cliché per la console.
argomenti opzionali:
& Nbsp; -h, --help mostra questo messaggio di aiuto ed esce
E infine:
djboss ciao
! Ciao, mondo
Requisiti
- Django
- Python
I commenti non trovato