[Django]Custom Command Line

Edit

[Django]Custom Command Line

Django를 다루면 가장 익숙한 파일이 manage.py 일 것이다. manage.py에는 runserver, makemigrations, migrate 등 다양한 명령어들이 있는데 이러한 Command를 자신 입맛에 맞춰 만들 수 있다.

Custom Command Line을 만들기 위해서는 다음과 같은 구조로 되어야한다.

practice
- practice
- __init__.py
- settings.py
- urls.py
- wsgi.py
- custom
- __init__.py
- management
- __init__.py
- commands
- __init__.py
- custom.py
- models.py
- views.py
- apps.py
- admin.py

custom 앱이 있다고 했을 경우에 settings.py에 custom 앱을 등록해주고, management 디렉토리를 만든 다음, commands 디렉토리를 생성해 그 안에 python 파일 하나를 생성해 주면 된다. 조심해야할 것은 python 파일이 있다는 것을 나타내기 위해 ___init__.py이 필요하다.

# custom.py
from django.core.management.base import BaseCommand

class Command(BaseCommand):
def handle(self, *args, **kwargs):
print('Hi')

이제 manage.py와 함께 custom 명령어를 쳐보자.

$ python manage.py custom
# Hi
%23%5BDjango%5DCustom%20Command%20Line%0A@%28Django%29%5Bdjango%7Cmanage%7Ccommand%5D%0A%0ADjango%uB97C%20%uB2E4%uB8E8%uBA74%20%uAC00%uC7A5%20%uC775%uC219%uD55C%20%uD30C%uC77C%uC774%20%60manage.py%60%20%uC77C%20%uAC83%uC774%uB2E4.%20%60manage.py%60%uC5D0%uB294%20%60runserver%60%2C%20%60makemigrations%60%2C%20%60migrate%60%20%uB4F1%20%uB2E4%uC591%uD55C%20%uBA85%uB839%uC5B4%uB4E4%uC774%20%uC788%uB294%uB370%20%uC774%uB7EC%uD55C%20Command%uB97C%20%uC790%uC2E0%20%uC785%uB9DB%uC5D0%20%uB9DE%uCDB0%20%uB9CC%uB4E4%20%uC218%20%uC788%uB2E4.%0A%0ACustom%20Command%20Line%uC744%20%uB9CC%uB4E4%uAE30%20%uC704%uD574%uC11C%uB294%20%uB2E4%uC74C%uACFC%20%uAC19%uC740%20%uAD6C%uC870%uB85C%20%uB418%uC5B4%uC57C%uD55C%uB2E4.%0A%0A%60%60%60%0Apractice%0A%09-%20practice%0A%09%09-%20__init__.py%0A%09%09-%20settings.py%0A%09%09-%20urls.py%0A%09%09-%20wsgi.py%0A%09-%20custom%0A%09%09-%20__init__.py%0A%09%09-%20management%0A%09%09%09-%20__init__.py%0A%09%09%09-%20commands%0A%09%09%09%09-%20__init__.py%0A%09%09%09%09-%20custom.py%0A%09%09-%20models.py%0A%09%09-%20views.py%0A%09%09-%20apps.py%0A%09%09-%20admin.py%0A%60%60%60%0A%0Acustom%20%uC571%uC774%20%uC788%uB2E4%uACE0%20%uD588%uC744%20%uACBD%uC6B0%uC5D0%20%60settings.py%60%uC5D0%20custom%20%uC571%uC744%20%uB4F1%uB85D%uD574%uC8FC%uACE0%2C%20management%20%uB514%uB809%uD1A0%uB9AC%uB97C%20%uB9CC%uB4E0%20%uB2E4%uC74C%2C%20commands%20%uB514%uB809%uD1A0%uB9AC%uB97C%20%uC0DD%uC131%uD574%20%uADF8%20%uC548%uC5D0%20python%20%uD30C%uC77C%20%uD558%uB098%uB97C%20%uC0DD%uC131%uD574%20%uC8FC%uBA74%20%uB41C%uB2E4.%20%uC870%uC2EC%uD574%uC57C%uD560%20%uAC83%uC740%20python%20%uD30C%uC77C%uC774%20%uC788%uB2E4%uB294%20%uAC83%uC744%20%uB098%uD0C0%uB0B4%uAE30%20%uC704%uD574%20%60___init__.py%60%uC774%20%uD544%uC694%uD558%uB2E4.%0A%0A%60%60%60python%0A%23%20custom.py%0Afrom%20django.core.management.base%20import%20BaseCommand%0A%0Aclass%20Command%28BaseCommand%29%3A%0A%20%20%20%20def%20handle%28self%2C%20*args%2C%20**kwargs%29%3A%0A%09%20%20%20%20print%28%27Hi%27%29%0A%60%60%60%0A%0A%0A%uC774%uC81C%20manage.py%uC640%20%uD568%uAED8%20custom%20%uBA85%uB839%uC5B4%uB97C%20%uCCD0%uBCF4%uC790.%0A%0A%60%60%60bash%0A%24%20python%20manage.py%20custom%0A%23%20Hi%0A%60%60%60