Django 创建和运行管理命令
示例
要使用命令行或其他服务(不使用用户/请求)在Django中执行操作,可以使用managementcommands。
可以根据需要导入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 # frommyapp.modelsimport 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()
在这里,类名Command是必需的,它扩展了BaseCommand或其子类之一。
管理命令的名称是包含该命令的文件的名称。要在上面的示例中运行命令,请在项目目录中使用以下命令:
pythonmanage.pymy_command
请注意,启动命令可能需要花费几秒钟的时间(由于模块的导入)。因此,在某些情况下,建议创建daemon流程而不是managementcommands。
有关管理命令的更多信息