본문 바로가기
Djnago

[Django] Custom command Create

by UnoCode 2020. 7. 4.

이번 시간에는 우리가 django manage.py runserver 하는것 처럼 renserver처럼 커멘드를 만들어 보겠습니다.

 

 

1. 아무app에서 management 폴더를 만든다

 

2. management 폴더 안에 __init__.py를 만든다.

 

3. management 폴더 안에 commands라는 폴더를 만든다.

 

4. 그안에 __init__.py를 만들고 커맨드로 설정할 py파일을 만든다. (여기서는 yourcommand.py로 만들었습니다.)

 

만들어 졌나 그럼 실행 시켜 볼까요

 

 

??? AttributeError가 뜨는걸 보니 무언가 이식 한거 같습니다.

 

더 읽어 보면 has no attribute 'Command' 라고 나와 있군요.

 

yourcommand.py에  Command를 만들어 보겠습니다.

 

django documnet를 뒤져보겠습니다.

 

검색은 command로 했습니다 

 

 

https://docs.djangoproject.com/en/3.0/howto/custom-management-commands/

장고 파일의 Class command 를 보면

 

help에다 값을 넣을 수 있다.

 

추측하건데 우리가 어떠한 명령어를 모를때 help치면 나오는 것을 만드는것 같다.

 

값을 집어넣어 보자

 

그리구 쭉 읽다벼면 parser.add.argment가 있다.

 

여기에 보면 --version 이라는것을 파람값으로 주는데 python manage.py yourcommand --version

이런 식으로 사용하는것인가 보다.

 

우리도 argument를 생성해 보자

 

add_argument를 보면 self,parser를 파람 값으로 받는다

 

장고 문서를 참고 해서 조금 수정했다.

 

python manage.py yourcommand --number 50 이라는 명령어를 쳐보니

 

handle함수에서 적용 되었던 your command 실행 이라고 출력 하고

 

그위에는 저가 궁금해서 arg값, option값을 출력 해보았습니다.

 

arg값은 빈 듀플 형태로 자료가 왔구 option에 저가 --number 뒤에 넣은 50값이 들어오는걸 확인 했습니다.

 

즉 핸들에 내가 원하는 행동을 하는 함수를 구현하면 사용자 커스텀 커맨드가 생성되는걸 확인 했습니다.

 

우리가 사용했던 runserver과 makemigrations , migrate 등 이러한 방법으로 커맨드를 등록 했나 조심스럽게 추측 해 봅니다.

 

'Djnago' 카테고리의 다른 글

[Django] prefetch_related  (0) 2020.07.25
[Django] login Decorator useing pyjwt  (0) 2020.07.18
[Django] 기본 세팅  (0) 2020.07.16
[Django] Django-tutorial 따라하기 1-2  (0) 2020.07.02
[Django] Django-tutorial 따라하기 1  (0) 2020.07.02

댓글