django自定义命令:如何使用减少重复代码

django自定义命令:如何使用减少重复代码,django,django-commands,Django,Django Commands,Django最好的特性之一是MVC的思维方式。作为一个非专业的程序员,我试着接受这一点。根据这个网站上的建议,我被鼓励开始使用django自定义命令,即使对于一些将作为日程Windows任务每天调用的脚本也是如此 但是我发现,如果我必须为每个命令创建一个模块,它似乎会创建大量重复的代码行。例如,至少导入语句。这真的是最好的方法吗?我能想到的唯一解决方案是创建一个“通用”自定义命令模块,它将参数作为要在通用模块内运行的命令 我是不是在认真思考?创建Django自定义命令的“最佳实践”是什么?最佳实

Django最好的特性之一是MVC的思维方式。作为一个非专业的程序员,我试着接受这一点。根据这个网站上的建议,我被鼓励开始使用django自定义命令,即使对于一些将作为日程Windows任务每天调用的脚本也是如此

但是我发现,如果我必须为每个命令创建一个模块,它似乎会创建大量重复的代码行。例如,至少导入语句。这真的是最好的方法吗?我能想到的唯一解决方案是创建一个“通用”自定义命令模块,它将参数作为要在通用模块内运行的命令

我是不是在认真思考?创建Django自定义命令的“最佳实践”是什么?

最佳实践是“一个任务一个命令”。当您在不使用命令的情况下运行manage时,它可以提高可发现性

干燥代码绝对是个好主意,但IMHO-django命令并不是代码复制的主要来源

下面是一个基本命令:

from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
<specific imports for my project>

class Command(BaseCommand):
    help = "Produce sample accounts."

    def handle(self, *args, **kwargs):
       # do a thing
来自django.core.management.base import BaseCommand的

从django.contrib.auth.models导入用户
类命令(BaseCommand):
help=“生成示例帐户。”
def句柄(自身、*args、**kwargs):
#做一件事
这并不是django本身的额外原油

干燥自己的代码的最干净的方法是重用应用程序中其他地方的handle()中的代码。这可以确保应用程序逻辑更改反映在相关的管理命令中,并且通常会删除较长的导入列表,因为这些对象是从核心应用程序逻辑而不是在管理命令中引用的