본문 바로가기
Coding/Python

Django Custom Command 만드는 방법

by Hide­ 2019. 5. 22.
반응형

보통 장고를 실행시키거나 테스트를 진행할 때 아래와 같은 명령어를 사용한다.


python3 manage.py runserver

python3 manage.py test


이와 같이 manage.py를 통해 장고에 대한 작업을 진행하는 형태이다. 위처럼 하나의 파일을 통해 원하는 명령어를 실행시킬 수 있다면 관리하기도 용이할 것이다. 편리하게도 장고측에서 위처럼 이미 정의되어있는 명령어 이외에도 Custom하게 명령어를 만들 수 있도록 기능을 제공해준다.


먼저 아래의 명령어로 앱을 하나 생성한다.


django-admin startapp testapp


그다음 앱 내부에 management라는 폴더를 생성한다. 그리고 해당 폴더 내부에 commands라는 폴더를 추가로 생성한다. commands폴더 내부에 실행시키고 싶은 명령어로 파일을 생성한다. 예를 들어서 python3 manage.py sync 처럼 sync라는 명령을 실행시키고 싶다면 sync.py로 파일을 생성하면 된다. 그리고 해당 파일 내부에 아래와 같이 작성한다.


from django.core.management.base import BaseCommand


class Command(BaseCommand):
def __init__(self):
super().__init__()

def handle(self, *args, **options):
print(1)


Command라는 클래스를 하나 만들고 BaseCommand를 상속받아야 한다. 그리고 상속받은 부모 클래스의 생성자를 그대로 가져오기위해 super().__init__()를 명시해줬다. 실행시키려는 작업은 handle()이라는 이름의 함수로 만들어서 작성하면 된다. 위처럼 작성해주고 settings의 INSTALLED_APPS에 생성한 앱의 이름을 명시해준다. 마지막으로 아래와 같은 명령어를 입력하면 실행시킬 수 있다.


python3 manage.py sync