Django의 MVT 아키텍처 이해하기
프로그래밍/소프트웨어 개발
웹 개발
초보자 및 중급 개발자, Django 프레임워크를 사용하는 사람들
핵심 요약
- Django는 MVT (Model-View-Template) 패턴을 사용하며, 이는 전통적인 MVC (Model-View-Controller)와 유사하지만 View가 Controller 역할을, Template이 View 역할을 수행한다.
- Model은 데이터를 정의하고 ORM을 통해 데이터베이스와 상호작용한다.
- View는 요청을 처리하고 데이터를 Template에 전달한다.
섹션별 세부 요약
1. MVT vs MVC
- MVC는 Model, View, Controller로 구성되며, Controller가 데이터 흐름을 조절한다.
- Django는 MVT를 사용하며, View가 Controller 역할을, Template이 View 역할을 수행한다.
- MVC는 Laravel, Ruby on Rails, ASP.NET 등에서 사용된다.
2. Model의 역할
- Model은 데이터베이스와의 상호작용을 처리하며, ORM을 통해 SQL을 직접 작성하지 않도록 한다.
- 예시:
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
- 각 Model 클래스는 데이터베이스의 테이블과 매핑된다.
3. View의 역할
- View는 사용자 요청을 처리하고, Model에서 데이터를 가져와 Template에 전달한다.
- 예시:
```python
def home(request):
posts = BlogPost.objects.all()
return render(request, 'home.html', {'posts': posts})
```
- View는 앱의 로직과 결정을 담당하며, 일반적으로 HTML 응답을 반환한다.
4. Template의 역할
- Template은 사용자가 보는 HTML 인터페이스로, 데이터를 동적으로 표시한다.
- 예시:
```html
{% for post in posts %}
{{ post.title }}
{{ post.content|truncatewords:20 }}
{% endfor %}
```
- Template은 Django Template Language (DTL)를 사용하며, View에서 전달된 데이터를 표시한다.
5. URL dispatcher의 역할
- URL dispatcher는 브라우저의 경로를 View에 연결한다.
- 예시:
```python
path('', views.home, name='home')
```
- 요청 흐름: 브라우저 요청 → URLConf(urls.py) → View(views.py) → Model(필요시) → Template(HTML) → 브라우저 응답
6. Django 관리자 인터페이스
- Model을 등록하면 Django가 관리자 UI를 제공하여 CRUD(생성, 읽기, 업데이트, 삭제) 기능을 제공한다.
- 예시:
```python
admin.site.register(BlogPost)
```
- 관리자 UI에 접근하려면
127.0.0.1:8000/admin
에 접속하고python manage.py createsuperuser
명령어로 사용자를 생성해야 한다.
결론
Django는 MVT 아키텍처를 기반으로 구성되며, View가 Controller 역할을, Template이 View 역할을 수행합니다. Model은 데이터를 정의하고 ORM을 통해 데이터베이스와 상호작용하며, View는 요청을 처리하고 Template에 데이터를 전달합니다. 실무에서 Django를 사용할 때는 URL dispatcher 설정과 관리자 인터페이스를 활용하여 개발 효율성을 높이는 것이 중요합니다.