2013-08-22 4 views
0

장고의 가장 큰 특징 중 하나는 MVC의 사고 방식입니다. 나는 이것을 전문 프로그래머가 아닌 사람으로 받아들이려고했다. 이 사이트의 권장 사항에서 django 사용자 정의 명령을 사용하는 것이 좋습니다. 심지어 Schedule Windows 작업으로 매일 호출되는 일부 스크립트에 대해서도 권장합니다.django 커스텀 커맨드 : 반복되는 코드를 줄이는 방법

모든 명령에 대한 모듈을 만들어야한다면 중복 된 코드 줄이 많이 생기는 것 같습니다. 적어도 예를 들어 수입 명세서. 이것을 실제로하는 것이 가장 좋은 방법입니까? 내가 생각할 수있는 유일한 해결책은 제네릭 모듈 내에서 실행되는 명령으로 인수를 취하는 '일반'사용자 지정 명령 모듈을 만드는 것입니다.

나는 여기에 정면으로 생각하고 있습니까? Django 커스텀 커맨드를 만들기위한 '베스트 프랙티스'는 무엇입니까?

답변

2

가장 좋은 방법은 "하나의 작업 하나의 명령"입니다. 명령없이 관리를 실행할 때 검색 가능성을 높입니다.

코드를 완전히 제거하는 것은 좋은 생각이지만, 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 

자체 장고에서 그렇게 많은 여분의 cruft에 아니다 :

는 여기에 기본 명령입니다.

코드를 DRY하는 가장 깨끗한 방법은 응용 프로그램의 다른 곳에서 handle() 코드를 재사용하는 것입니다. 이렇게하면 응용 프로그램 논리 변경 사항이 관련 관리 명령에 반영되고, 관리 명령이 아닌 핵심 응용 프로그램 논리에서 해당 개체가 참조되므로 가져 오기 목록이 길어질 수 있습니다.