티스토리 뷰

🐍/Django

[Django] Custom Management Command 만들기

사용자 eungding 2020. 10. 27. 21:58
728x90
반응형

이 문서를 보고 Custom Management Command를 만들어보도록 하겠습니다. 

 

[1]  Custom Management Command란

 

우선 Management Command란

우리가 자주하는 기본 명령어들을 말합니다. (python manage.py로 시작하는) 

python manage.py runserver
python manage.py migrate

 

그럼 Custom Management Command란

아래와 같은 명령어를 의미하는 거겠네요-!

ptyhon manage.py 나의 커스텀 액션

 

[2] 문서보기 

 

장고의 앱들은 각각의 액션을 manage.py에 등록할 수 있습니다. 

예를들어 polls앱에서는 closepoll이라는 custom command를 만들어서 돌리고 싶을 수 있겠습니다. 

 

python manage.py closepoll <poll_ids>

 

이를 위해 앱에 management/commands 라는 디렉토리를 만들어주세요

장고는 이 디렉토리에 있는 모듈을 커맨드로 등록할 것 입니다. 

 

다만 파일명이 underscore로 시작하지 않는 것들만 등록한다고 합니다. 

아래 사진처럼 되어있다면 장고는 _private.py말고 closepoll.py만 management command로 등록하겠죠?!

 

 

그리고 파일 안에서는  BaseCommand 를 상속받은 Command를 만들어주면 됩니다. 

 

 

참고로 console에 output이 찍히기 원한다면 self.stdout 를 쓰라고 하네요. (위 코드의 맨마지막줄)

 

 

[3] Custom Command 만들고 실행해보기

 

저는 question앱에 만들어볼게요

 

management/commands 디렉토리를 만들어주고

makequestion.py 파일을 만들어줬어요 

 

 

 

그리고 문서 코드를 참고해서 Command를 이렇게 만들어줬습니다. 

 

 

그리고 터미널에 만든 command를 실행해보면

python manage.py makequestion 테스트질문입니다

 

잘된다고 나오고 

 

 

로컬 서버를 돌리고 관리자사이트에 들어가보면 

python manage.py runserver localhost:8000

 

만든 질문이 DB에 잘 추가된 것을 볼 수 있습니다. 

 

 

728x90
반응형
댓글
댓글쓰기 폼