创建和运行管理命令
要使用命令行或其他服务(不使用用户/请求)在 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
。