Python/Django

Django 기본 폴더 구조 및 역할

임베디드 친구 2025. 10. 24. 20:02
반응형

Django 기본 폴더 구조 및 역할

1. 들어가며

Django는 강력한 웹 프레임워크로, 프로젝트를 체계적으로 관리할 수 있도록 기본적인 폴더 구조를 제공합니다. Django의 폴더 구조를 이해하면 프로젝트를 더 효율적으로 개발하고 유지보수할 수 있습니다. 이번 포스팅에서는 Django 프로젝트를 생성했을 때 기본적으로 생성되는 폴더와 그 역할에 대해 설명드리겠습니다.


2. Django 프로젝트 생성하기

Django 프로젝트를 시작하려면 먼저 프로젝트를 생성해야 합니다. 다음 명령어를 실행하면 myproject라는 새로운 Django 프로젝트가 생성됩니다.

$ django-admin startproject myproject

이제 myproject 폴더 안을 살펴보면 다음과 같은 구조를 확인할 수 있습니다.

myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py

각 파일과 폴더가 어떤 역할을 하는지 하나씩 살펴보겠습니다.


3. Django 프로젝트의 주요 파일 및 폴더

3.1 manage.py

manage.py는 Django 프로젝트를 관리하는 커맨드라인 유틸리티 파일입니다. 서버 실행, 마이그레이션, 앱 생성 등의 명령을 실행할 때 사용됩니다.

예를 들어, 개발 서버를 실행하려면 다음 명령어를 입력합니다.

$ python manage.py runserver

또한, 새로운 앱을 생성할 때도 manage.py를 활용할 수 있습니다.

$ python manage.py startapp myapp

3.2 프로젝트 폴더 (myproject/)

이 폴더에는 프로젝트의 설정과 루트 URL 라우팅 등을 담당하는 중요한 파일들이 포함되어 있습니다.

__init__.py

이 파일은 myproject 폴더를 Python 패키지로 인식하도록 합니다. 일반적으로 비어 있는 파일이지만, 필요한 경우 초기화 코드를 추가할 수 있습니다.

settings.py

Django 프로젝트의 모든 설정이 들어 있는 파일입니다. 데이터베이스 설정, INSTALLED_APPS, 미들웨어, 템플릿 설정 등이 포함됩니다.

예를 들어, SQLite 대신 PostgreSQL을 사용하려면 DATABASES 설정을 다음과 같이 변경할 수 있습니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

urls.py

프로젝트의 URL 라우팅을 담당하는 파일입니다. 이 파일에서 각 앱의 URL을 프로젝트에 연결할 수 있습니다.

예를 들어, myapp이라는 앱의 URL을 연결하려면 다음과 같이 설정할 수 있습니다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')),
]

wsgi.py

WSGI(Web Server Gateway Interface) 설정 파일입니다. Django를 배포할 때 WSGI 서버(Gunicorn, uWSGI 등)와 연결하는 역할을 합니다.

asgi.py

ASGI(Asynchronous Server Gateway Interface) 설정 파일입니다. Django에서 비동기 웹소켓 등을 사용할 경우 필요합니다.


4. Django 앱(App) 구조

앞서 python manage.py startapp myapp 명령을 실행하면 myapp이라는 앱이 생성됩니다. 이 폴더의 구조는 다음과 같습니다.

myapp/
├── migrations/
│   ├── __init__.py
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── views.py

각 파일이 하는 역할을 살펴보겠습니다.

models.py

Django의 데이터 모델을 정의하는 파일입니다. 예를 들어, Book 모델을 정의하려면 다음과 같이 작성할 수 있습니다.

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    published_date = models.DateField()

views.py

웹 요청을 처리하는 뷰(View) 함수를 정의하는 파일입니다. 예를 들어, 간단한 HTTP 응답을 반환하는 뷰를 작성할 수 있습니다.

from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")

admin.py

Django의 관리자(Admin) 사이트에 모델을 등록하는 파일입니다.

from django.contrib import admin
from .models import Book

admin.site.register(Book)

migrations/

데이터베이스 마이그레이션 파일이 저장되는 폴더입니다.

tests.py

Django에서 제공하는 테스트 프레임워크를 활용해 테스트 코드를 작성하는 파일입니다.


5. 정리

Django의 기본 폴더 구조는 프로젝트를 체계적으로 관리할 수 있도록 설계되어 있습니다. 프로젝트의 루트 폴더에는 manage.py가 있으며, 프로젝트 폴더에는 settings.py, urls.py 등이 포함됩니다. 또한, 각각의 앱은 models.py, views.py, admin.py 등의 파일을 포함하며, 데이터 모델과 뷰를 정의하는 역할을 합니다.

이해를 돕기 위해 간단한 예제 코드도 함께 살펴보았습니다. Django 프로젝트를 진행하면서 폴더 구조를 잘 활용하면 보다 깔끔한 코드 관리를 할 수 있을 것입니다.

반응형