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

时间:2013-08-22 11:18:58

标签: django django-commands

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

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

我在这里思考吗?创建Django自定义命令的“最佳实践”是什么?

1 个答案:

答案 0 :(得分:2)

最佳做法是“一个任务一个命令”。当您在没有命令的情况下运行manage时,它可以提高可发现性。

干掉你的代码绝对是一个好主意,但恕我直言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本身的额外残余。

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