建立和執行管理命令
要使用命令列或其他服務(不使用使用者/請求)在 Django 中執行操作,你可以使用 management commands
。
可以根據需要匯入 Django 模組。
對於每個命令,需要建立一個單獨的檔案:myapp/management/commands/my_command.py
(management
和 commands
目錄必須有一個空的__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()
這裡的類名命令是必需的,它擴充套件了 BaseCommand 或其子類之一。
管理命令的名稱是包含它的檔案的名稱。要在上面的示例中執行該命令,請在專案目錄中使用以下命令:
python manage.py my_command
請注意,啟動命令可能需要幾秒鐘(因為匯入了模組)。所以在某些情況下,建議建立
daemon
程序而不是management commands
。