728x90
개인 프로젝트를 진행하면서 DRF를 하나하나 이해해보기 위해 여러 가지를 보고 있는데,
모든 명령 코드가 manage.py에서 시작되기 때문에 manage.py 코드를 꼼꼼히 읽어보았다.
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Studysyncer.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
manage.py의 전체 코드이다.
줄이 생각보다 적다고 생각할 수 있지만.. 까고 보면 상당히 많은 이해가 필요하다.
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Studysyncer.settings')
"""
Studysyncer.settings를 프로젝트의 설정 모듈로 사용하도록 환경 변수를 설정
정상적일 경우 execute_from_command_line 함수를 실행
"""
try:
from django.core.management import execute_from_command_line
"""
except
함수를 가져오는 동안 에러 발생 시 ImportError를 처리
Django가 설치되어 있지 않거나 PYTHONPATH 환경 변수에서 사용 가능한 위치에 Django가 없는 경우
해당 예외가 발생
"""
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
# 명령줄 인수(sys.argv)를 전달하여 execute_from_command_line 함수를 실행
# 이를 통해 manage.py를 사용하여 다양한 Django 관리 작업을 실행할 수 있습니다.
execute_from_command_line(sys.argv)
좀 더 확실한 이해를 위해 내장함수로 저장된 것들을 알아보았다.
def execute_from_command_line(argv=None):
"""Run a ManagementUtility."""
utility = ManagementUtility(argv)
utility.execute()
"""
utility라는 인자를 만들었는데,
인자 하나가 붙는 ManagementUtility를 간단하게 설정했다.
여기서 이제 이 utility를 실행하면서 다음 단계로 넘어간다.
"""
이 다음에 그럼 ManagementUtility에서는 어떤 동작이 이루어지는지 알아보려고 했는데..
코드가 400줄이 넘어가서 읽기가 정말 쉽지 않았다.
먼저 챗지피티에 문의를 했는데
Django의 ManagementUtility 클래스는 Django 프로젝트와 관련된 여러 관리 작업을 수행하는 데 사용되는 클래스입니다. 이 클래스는 Django의 커맨드 라인 도구 (예: manage.py)를 통해 Django 프로젝트의 다양한 관리 명령을 실행하는 데 사용됩니다. 예를 들어, 데이터베이스 마이그레이션, 애플리케이션 생성, 서버 시작 등의 작업을 수행할 수 있습니다.
상당히 추상적이다..
그래서 너무 깊게 파지 않는 대신에 함수 별로 간단히 공부해보았다.
- main_help_text
- Django 관리 명령의 도움말 텍스트를 생성하고 반환하는 함수
- --help 옵션을 사용하거나 잘못된 명령을 입력했을 때 표시되는 명령어의 사용법과 설명을 생성하는 데 활용
- fetch_command
- 이 함수는 명령줄에서 입력한 명령에 해당하는 Django 명령 객체를 가져옴
- 객체를 인스턴스화해서 반환하는 함수
- autocomplete
- 검색 자동완성
- 보통은 JavaScript와 함께 사용되는 라이브러리 or 패키지 활용
- 이 기능을 디버깅해야 하는 경우, 디버그를 쓰는 편이 좋다
- execute
- manage.py 실행 시 명령줄에서 실행한 Django 관리 명령 처리
'Framework > Django' 카테고리의 다른 글
ORM이란? (0) | 2023.12.16 |
---|---|
reverse, reverse_lazy (0) | 2023.12.16 |
DRF Serializer는 무엇이며, 어떤 기능을 수행합니까? (0) | 2023.10.11 |
RESTful API (0) | 2023.09.23 |
Django 테스트코드에서 setup 함수와 setupclass의 차이는 무엇입니까? (0) | 2023.09.23 |