티스토리 뷰
Why?
standalone script를 실행하고자 하는 경우, DB에 어떤 내용을 넣고 싶은 경우, 기타 등등 작업이 필요한 경우 custom command를 만들어 사용하면 유용.
How?
해당 app 디렉토리에 app/management/commands/command_name.py 형식으로 파이썬 파일 생성.
파일 이름이 command 이름이 됨.
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'Help message'
def add_arguments(self, parser):
# CLI 창에서 받을 argument 정의
parser.add_argumnet('argument', nargs='+', type=int)
def handle(self, *args, **options):
# 실제 command가 수행 할 내용
try:
print('I am custom command')
except ErrorException:
raise CommandError('I am Error')
# CLI 창에 메시지 출력
self.stdout.write(self.style.SUCCESS('Successfully updated all Lotto numbers'))
메시지 출력 style는 아래와 같이 제공
- 'ERROR'
- 'SUCCESS'
- 'WARNING'
- 'NOTICE'
- 'SQL_FIELD'
- 'SQL_COLTYPE'
- 'SQL_KEYWORD'
- 'SQL_TABLE'
- 'HTTP_INFO'
- 'HTTP_SUCCESS'
- 'HTTP_REDIRECT'
- 'HTTP_NOT_MODIFIED'
- 'HTTP_BAD_REQUEST'
- 'HTTP_NOT_FOUND'
- 'HTTP_SERVER_ERROR'
- 'MIGRATE_HEADING'
- 'MIGRATE_LABEL'
TEST
from io import StringIO
from django.core.management import call_command
from django.test import TestCase
class ClosepollTest(TestCase):
def test_command_output(self):
out = StringIO()
call_command('closepoll', stdout=out)
self.assertIn('Expected output', out.getvalue())
'Django' 카테고리의 다른 글
ViewSets & Routers (0) | 2019.08.29 |
---|---|
Relationships & Hyperlinked APIs (0) | 2019.08.29 |
REST API Authentication & Permissions (0) | 2019.08.29 |
Rest Framework Views (0) | 2019.08.29 |
Serializer (0) | 2019.08.29 |
최근에 올라온 글
글 보관함