Back-end/Django

Django 프로젝트 및 앱 구조

Sangwoo Seo 2023. 1. 26. 16:41

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. 장고 공식 튜토리얼

2. __init__.py의 역할

3. 장고 앱 구조 - ally0526