Django 프로젝트 및 앱 구조
Django 프로젝트 구조
Django 프로젝트의 일반적인 구조는 아래와 같습니다.
directory/
project/
__init__.py
asgi.py
setting.py
urls.py
wsgi.py
manage.py
project/asgi.py : 현재 프로젝트를 서비스하기 위한 asgi 호환 웹서버 진입점입니다.
project/setting.py : 현재 django 프로젝트의 환경 및 구성을 저장합니다.
project/urls.py : 현재 django 프로젝트의 URL 선언을 저장합니다.
project/wsgi.py : 현재 프로젝트를 서비스하기 위한 wsgi 호환 웹서버 진입점입니다.
manage.py : Django 프로젝트와 다양한 방법으로 상호작용하는 커맨드 라인 유틸리티입니다.
(* __init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 합니다. 만약 없다면 패키지로 인식되지 않습니다.)
asgi와 wsgi는 공용 게이트웨이 인터페이스(command line interface, CGI)의 일종으로 클라이언트와 서버간의 통신 시 정보를 주고 받는 방법이나 규약을 말합니다. 쉽게 말해 asgi와 wsgi의 경우 http 신호를 python 언어로 번역하여 django로 전달하는 역할을 합니다.
Django 앱 구조
Django 앱의 일반적인 구조는 아래와 같습니다.
directory/
project/
app1/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
view.py
app2/
app3/
...
manage.py
app1/migrations/ : Django 앱의 데이터 구조에 대한 변경 사항인 migration 파일이 저장되는 디렉토리입니다.
app1/admin.py : 각각의 app을 django 관리자 기능과 연결하거나 관리자 기능에 대해 설정하는 파일입니다.
app1/apps.py : 각각의 app 마다 추가적인 기능 및 설정을 넣어주기 위한 파일입니다.
app1/models.py : App에서 사용되는 데이터 구조를 정의하고 데이터 베이스와의 소통을 담당하는 파일입니다.
app1/tests.py : App에 대한 테스트 코드를 작성하는 파일입니다. 프로젝트를 완성한 다음 테스트를 준비하는 것이 아니라 app 별로 작은 단위의 자동화된 테스트를 미리 만들어서 프로젝트 전체에 대한 테스트가 효율적으로 이루어질 수 있도록 작성하는 파일입니다.
app1/view.py : App에서 어떤 기능을 할지에 대한 메인 로직을 담당하는 파일입니다.
# References
1. 장고 공식 튜토리얼