티스토리 뷰
이 문서를 보고 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를 이렇게 만들어줬습니다.
from django.core.management.base import BaseCommand, CommandError | |
from question.models import Question | |
class Command(BaseCommand): | |
help = '타이틀를 입력하여 질문을 만듭니다.' | |
def add_arguments(self, parser): | |
parser.add_argument('title', type=str) | |
def handle(self, *args, **options): | |
title = options['title'] | |
question = Question(title=title) | |
question.save() | |
self.stdout.write('Successfully make question "%s"' % title) |
그리고 터미널에 만든 command를 실행해보면
python manage.py makequestion 테스트질문입니다
잘된다고 나오고

로컬 서버를 돌리고 관리자사이트에 들어가보면
python manage.py runserver localhost:8000
만든 질문이 DB에 잘 추가된 것을 볼 수 있습니다.

'🐍 > Django' 카테고리의 다른 글
[Django] 장고, Heroku의 기본 DB 설정 살펴보기 (0) | 2021.01.13 |
---|---|
[Heroku] Scheduler를 이용해서 반복 작업 돌리기 (0) | 2020.11.02 |
[Django] FCM 서버를 통해 앱에 푸쉬보내기 (6) | 2020.10.24 |
[Django] 튜토리얼 part 6 - 정적 파일 (0) | 2020.02.29 |
[Django] 튜토리얼 part 5 (2) - 뷰 테스트 작성하기 (0) | 2020.02.22 |
- Total
- Today
- Yesterday
- Flutter Clipboard
- METAL
- PencilKit
- Flutter 로딩
- flutter deep link
- Flutter getter setter
- 장고 URL querystring
- 플러터 얼럿
- drf custom error
- cocoapod
- 장고 Custom Management Command
- 구글 Geocoding API
- 플러터 싱글톤
- Django Firebase Cloud Messaging
- Django FCM
- Flutter Spacer
- Sketch 누끼
- flutter build mode
- SerializerMethodField
- ribs
- Watch App for iOS App vs Watch App
- Django Heroku Scheduler
- Python Type Hint
- Dart Factory
- flutter 앱 출시
- ipad multitasking
- flutter dynamic link
- github actions
- Flutter Text Gradient
- DRF APIException
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |