Django
Ledningskommandon
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 harchmod +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örmanagement commands
.
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