이번 시간에는 우리가 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로 했습니다
장고 파일의 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 |
댓글