Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 성수동카페
- 강원도속초맛집
- DOM
- 남양주맛집
- 부스트코스
- 건대입구맛집
- pipenv
- 노마드코더
- 컴퓨터과학
- 아스키코드
- 속초여행
- 포인터
- richtext
- 가상환경
- 자바
- popupmenubutton
- Django
- 알고리즘
- 정렬알고리즘
- removetooltip
- Python
- c언어문자열
- JavaScript
- 장고
- FLUTTER
- 코딩독학
- python3
- 상속
- BeautifulSoup
- 추상클래스
Archives
- Today
- Total
YUYANE
Django / manage.py commands 커스터마이징 하기 본문
학습 강의
nomadcoders.co/airbnb-clone/lobby
장고 프로젝트에서 명령을 실행할 때 아래와 같은 구문을 쓴다. 오늘은 정해진 명령어를 사용하는 대신 명령어를 커스터마이징 하는 방법에 대해 알아보자.
python manage.py 명령어
디렉토리 구조
장고 프로젝트에서 어떤 앱이든 커스터마이징 한 command를 manage.py 에 등록할 수 있다.
우선, 아래와 같이 원하는 앱 폴더(polls)에 management/commands 디렉토리를 추가하자.
polls/
__init__.py
models.py
management/
commands/
_private.py
closepoll.py
tests.py
views.py
그러면 Django는 이름이 밑줄로 시작하지 않는 디렉토리의 각 Python 모듈에 대해 manage.py 명령을 등록한다.
예시에서 살펴보면 closepoll.py만 management 명령으로 사용될 수 있다.
파일 구조
위의 closepoll.py가 command로 사용되려면 BaseCommand(혹은 하위클래스)를 상속한 Command 클래스가 필요하다.
예시는 아래와 같다. handle() 메소드 구현은 필수!
BaseCommand, CommandError
from polls.models import Question as Poll
class Command(BaseCommand):
help = 'Closes the specified poll for voting'
def add_arguments(self, parser):
parser.add_argument('poll_ids', nargs='+', type=int)
def handle(self, *args, **options):
for poll_id in options['poll_ids']:
try:
poll = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise CommandError('Poll "%s" does not exist' % poll_id)
poll.opened = False
poll.save()
self.stdout.write(self.style.SUCCESS('Successfully closed poll "%s"' % poll_id))
참고
docs.djangoproject.com/en/3.1/howto/custom-management-commands/
'Framework > DJANGO' 카테고리의 다른 글
Django / No changes detected (0) | 2021.03.14 |
---|---|
Django / view.py (0) | 2021.03.09 |
Django / Model 메소드 오버라이딩 (0) | 2021.02.25 |
Django / MEDIA_ROOT, MEDIA_URL (0) | 2021.02.24 |
Django / Managers와 QuerySet (related_name) (0) | 2021.02.24 |
Comments