Пользовательские команды django: как использовать сокращение повторяющегося кода
Одна из лучших особенностей Django - образ мышления MVC. Я пытался принять это как непрофессиональный программист. Из рекомендаций на этом сайте мне было рекомендовано начать использовать пользовательские команды django, даже для некоторых сценариев, которые будут вызываться ежедневно как задача Windows по расписанию.
Я нахожу, однако, что, если мне нужно создать модуль для каждой команды, он, кажется, создает много повторяющихся строк кода. По крайней мере, например, операторы импорта. Это действительно лучший способ сделать это? Единственное решение, которое я могу придумать, - это создать "универсальный" пользовательский командный модуль, который принимает аргумент в качестве команды для запуска в универсальном модуле.
Я думаю прямо здесь? Каковы "лучшие практики" для создания пользовательских команд Django?
1 ответ
Лучшая практика - "одна задача - одна команда". Это способствует обнаружению, когда вы запускаете управление без команд.
Высушивание вашего кода - абсолютно хорошая идея, но команды 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
Это не так уж много лишнего от самого Джанго.
Самый чистый способ высушить свой собственный код - это повторно использовать код в handle() из любого другого места в вашем приложении. Это гарантирует, что изменения логики приложения отражаются в соответствующих командах управления, и часто удаляет длинные списки импорта, поскольку на эти объекты ссылаются из базовой логики приложения, а не в вашей команде управления.