Django: 프로젝트와 앱 구조, 그리고 디자인 패턴 이해하기
Django의 기본적인 프로젝트 생성 과정부터 앱의 개념과 사용법, 그리고 MTV 디자인 패턴
01. Django 프로젝트
Django는 프로젝트를 단위로 움직입니다!
Django에서의 작업은 프로젝트 단위로 이루어집니다. 프로젝트는 특정 웹 애플리케이션을 개발하는 데 필요한 설정, 데이터베이스 구성, 애플리케이션 등이 포함된 구조입니다.
프로젝트 생성 과정
Django 프로젝트를 시작하려면 다음 단계를 따라야 합니다:
- 가상환경 생성 및 활성화
- Django 설치
- 의존성 파일(
requirements.txt
) 생성 - 프로젝트 생성 및 기본 설정
프로젝트 생성
프로젝트 생성 명령어
1
django-admin startproject <프로젝트 이름> <생성 디렉토리>
- 생성 디렉토리를 생략하면, 현재 디렉토리 내에 프로젝트 이름의 폴더가 생성됩니다.
현재 폴더를 프로젝트 폴더로 설정하기
1
django-admin startproject <프로젝트 이름> .
.
은 현재 폴더를 의미하며, 현재 폴더를 프로젝트 폴더로 지정합니다.
실습: 나의 첫 Django 프로젝트 만들기
1. 프로젝트 생성
1
django-admin startproject my_first_pjt
- 프로젝트 이름은 자유롭게 설정할 수 있습니다.
- 명령 실행 후, 아래와 같은 폴더 구조가 생성됩니다:
1
2
3
4
5
6
7
8
my_first_pjt/
manage.py
my_first_pjt/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
2. 폴더 이동
프로젝트 폴더로 이동합니다:
1
cd my_first_pjt
3. 개발 서버 실행
개발 서버를 실행하여 프로젝트가 정상적으로 작동하는지 확인합니다:
1
python manage.py runserver
- 브라우저에서 http://127.0.0.1:8000/에 접속하면 Django 환영 화면이 표시됩니다.
프로젝트 구조 이해하기
프로젝트 생성 후 나타나는 파일과 폴더는 Django 프로젝트를 구성하는 기본 요소입니다. 주요 파일의 역할은 다음과 같습니다:
settings.py
: 프로젝트의 설정을 관리하는 파일입니다.urls.py
: URL 라우팅을 설정하여 요청을 처리할 뷰를 지정합니다.__init__.py
: 폴더를 Python 패키지로 인식하게 만듭니다.wsgi.py
: 웹 서버 게이트웨이 인터페이스 설정 파일입니다.manage.py
: 프로젝트와 관련된 유틸리티를 실행하는 스크립트입니다.
💡 Tip: 실습 초기에는
settings.py
와urls.py
만 집중적으로 다루면 충분합니다.
프레임워크에 대한 마음가짐
- 프레임워크는 개발을 돕기 위한 도구입니다.
- 파일이나 설정의 세부 내용에 너무 얽매이지 말고, 전체 구조를 이해하는 데 초점을 맞추세요.
02. 여러 가지 기능으로 이루어진 프로젝트
프로젝트란?
하나의 프로젝트는 하나의 서비스를 의미합니다. 예를 들어, 특정 웹사이트 A를 개발하려면, A라는 프로젝트를 생성하는 것으로 시작합니다.
하나의 프로젝트는 다양한 기능으로 이루어집니다.
우리가 사용하는 웹사이트들을 떠올려보세요:
- Naver, Facebook 등에는 유저 관리, 게시물 작성, 채팅, 좋아요 기능 등 다양한 기능이 존재합니다.
이처럼 하나의 웹 프로그램 안에는 공통된 기능들이 포함됩니다. 이러한 기능을 한 번만 만들어 재사용할 수 있다면 개발의 효율성이 크게 증가합니다. Django에서는 이러한 효율성을 위해 앱(App)이라는 개념을 도입했습니다.
03. Django 앱(App)
Django 앱이란 무엇일까요?
Django 앱은 특정 기능을 수행하는 모듈입니다.
Django App의 특징
- Django 앱은 하나의 기능 덩어리로 볼 수 있습니다.
- 하나의 프로젝트는 여러 개의 앱으로 구성될 수 있습니다.
- 물론 하나의 앱으로 모든 기능을 개발할 수도 있지만, 일반적으로 여러 개의 앱으로 나누어 개발하는 것이 권장됩니다.
프로젝트와 앱의 차이
- 프로젝트(Project): 어플리케이션(앱)의 집합체.
- 앱(App): 각각의 기능 단위 모듈.
App 사용하기
Django에서 앱을 사용하려면 두 가지 과정이 필요합니다:
- 앱 생성하기
- 앱 등록하기
1️⃣ App 생성하기
Django 앱을 생성하기 위해 manage.py
를 사용합니다.
1
python manage.py startapp <앱 이름>
예제: App 생성
1
python manage.py startapp articles
💡 Tip: Django에서는 앱 이름을 복수형으로 짓는 것이 권장됩니다.
명령 실행 후, 다음과 같은 폴더 구조가 생성됩니다:
1
2
3
4
5
6
7
articles/
admin.py
apps.py
migrations/
models.py
tests.py
views.py
2️⃣ App 등록하기
생성한 앱을 사용하려면 프로젝트의 settings.py
파일에 앱을 등록해야 합니다:
settings.py
파일을 엽니다.INSTALLED_APPS
리스트에 생성한 앱 이름을 추가합니다.
1
2
3
4
5
6
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...
'articles', # 생성한 앱 등록
]
💡 Tip: 마지막에 콤마(,)를 붙여 두면, 나중에 앱을 추가할 때 편리합니다. 이를 Trailing commas라고 부릅니다.
App 구조 살펴보기
Django 앱을 생성하면 다양한 파일이 함께 생성됩니다. 주요 파일의 역할은 다음과 같습니다:
admin.py
: 관리자용 페이지 관련 설정 파일.apps.py
: 앱 관련 정보 설정 파일.models.py
: 데이터베이스 구조를 정의하는 파일.tests.py
: 테스트를 작성하는 파일.views.py
: 요청을 처리하고 응답을 반환하는 파일.
💡 너무 어렵게 느껴지더라도 걱정하지 마세요! 필요한 시점에 하나씩 배우면 됩니다. 😊
프로젝트와 앱 설계의 중요성
Django에서 프로젝트와 앱을 분리하여 설계하면 다음과 같은 장점이 있습니다:
- 코드의 재사용성이 높아집니다.
- 각 기능별로 모듈화되어 유지보수가 쉬워집니다.
04. 디자인 패턴 이야기
디자인 패턴이란?
디자인 패턴은 자주 사용되는 소프트웨어 구조를 마치 건축 공법처럼 일반화한 것입니다. 복잡한 구조나 문제를 해결하기 위한 반복적인 접근 방식에서 공통적으로 발견되는 패턴을 정리한 것이죠.
소프트웨어의 디자인 패턴
전 세계 개발자들이 비슷한 문제를 해결하며 공통적인 구조를 발견했습니다. 이를 기반으로 형식화된 설계 방식이 바로 소프트웨어 디자인 패턴입니다.
왜 디자인 패턴이 필요할까요?
- 특정 구조에 대한 설계를 빠르게 할 수 있습니다.
- 공통적인 문제에 대해 재사용 가능한 해결 방법을 제공합니다.
- 설계와 개발 과정에서 생산성을 높이고, 유지보수를 용이하게 합니다.
예를 들어, 클라이언트-서버 구조도 소프트웨어 디자인 패턴 중 하나입니다.
05. Django의 디자인 패턴
Django와 디자인 패턴
Django는 디자인 패턴을 기반으로 설계되었습니다.
Django의 MTV 패턴
Django는 MTV Pattern이라는 디자인 패턴을 따릅니다. 이 패턴은 널리 알려진 MVC 패턴을 변형한 것입니다.
MVC 디자인 패턴
MVC는 소프트웨어를 Model, View, Controller로 나누어 설계하는 방식입니다.
각 구성 요소의 역할
- Model: 데이터와 관련된 로직을 관리합니다.
- View: 레이아웃과 화면상의 로직을 처리합니다.
- Controller: Model과 View를 연결하는 로직을 담당합니다.
💡 이렇게 분리하는 이유는?
- 관심사를 분리하여 생산성을 높이고 유지보수를 용이하게 합니다.
- 여러 개발자가 동시에 작업하기에도 유리합니다.
Django의 MTV 패턴
Django의 MTV 패턴은 MVC와 거의 동일하지만, 구성 요소의 이름과 역할이 약간 다릅니다:
MVC | MTV |
---|---|
Model | Model |
View | Template |
Controller | View |
MTV 구성 요소의 역할
- Model
- 데이터와 관련된 로직을 처리합니다.
- 데이터 구조 정의와 데이터베이스 기록 관리를 담당합니다.
- Template
- 화면상의 레이아웃과 UI를 처리합니다.
- MVC에서의 View와 같은 역할을 합니다.
- View
- 클라이언트의 요청을 처리하고 응답을 생성합니다.
- 메인 비즈니스 로직을 담당하며, Model과 Template 사이에서 중간 역할을 수행합니다.
MTV 패턴 한눈에 보기
Django의 MTV 패턴은 다음과 같이 작동합니다:
- 사용자가 요청을 보냅니다.
- View가 요청을 처리하고, 필요한 데이터를 Model에서 가져옵니다.
- 가져온 데이터를 Template에 전달하여 화면을 렌더링합니다.
- 렌더링된 결과를 사용자가 확인합니다.
Django MTV 패턴, 이해하기 질문
- Django의 디자인 패턴은 무엇인가요?
- Django의 Model은 어떤 역할을 하나요?
- Django의 Template은 어떤 역할을 하나요?
- Django의 View는 어떤 역할을 하나요?
정답
- MVC 패턴을 변형한 MTV 디자인 패턴입니다.
- 데이터 관련 로직을 처리합니다.
- 화면 관련 로직을 처리합니다.
- Model과 Template 중간 로직을 처리하며, 메인 비즈니스 로직을 담당합니다.