【问题标题】:django custom commands: how to use reduce repeated codedjango 自定义命令:如何使用减少重复代码
【发布时间】:2013-08-22 11:18:58
【问题描述】:
Django 的最佳特性之一是 MVC 思维方式。我试图以非专业程序员的身份接受这一点。根据本网站上的建议,我被鼓励开始使用 django 自定义命令,即使对于某些将作为计划 Windows 任务每天调用的脚本也是如此。
我发现,如果我必须为每个命令创建一个模块,它似乎会创建很多重复的代码行。至少例如导入语句。这真的是最好的方法吗?我能想到的唯一解决方案是创建一个“通用”自定义命令模块,该模块将参数作为在通用模块中运行的命令。
我在这里是认真思考的吗?创建 Django 自定义命令的“最佳实践”是什么?
【问题讨论】:
标签:
django
django-commands
【解决方案1】:
最佳实践是“一项任务一项命令”。当您在没有命令的情况下运行 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()中的代码。这可确保应用程序逻辑更改反映在相关的管理命令中,并且通常会删除长长的导入列表,因为这些对象是从核心应用程序逻辑而不是在您的管理命令中引用的。