본문 바로가기

WEB

[Django] MTV 패턴

[MTV 패턴]


장고는 MVC(Model-View-Controller)를 기반으로 한 프레임워크이다.

장고에서는 MVC대신 MTV(Model-Template-View)라고 한다.

 

MVC 패턴이란 model, view, controller를 구분하여 각 요소들이 서로 영향을 미치지 않게하는 패턴이다.

 

 

 

 

[Model]


MVC의 Model과 같은 역할이다.

모델은 DB에 저장되는 데이터를 의미한다. 모델은 models.py에서 클래스로 정의되며 하나의 클래스가 하나의 DB Table이다.

원래 DB를 조작하기 위해서는 SQL을 다룰 줄 알아야 하지만 ORM(Object Relational Mapping)을 사용하여 쿼리문을 몰라도 데이터 작업을 쉽게 할 수 있다.

from django.db import models

# Create your models here.
class BoardTab(models.Model):
    name = models.CharField(max_length=20)
    passwd = models.CharField(max_length=20)
    mail = models.CharField(max_length=30)

 

 

 

[Template]


MVC의 View와 같은 역할이다.

사용자에게 보여지는 부분으로 html 파일이 해당된다.

장고는 자체적인 Django Template 문법을 지원하며 이 문법으로 context로 받은 데이터를 처리할 수 있다.

from django.shortcuts import render

# Create your views here.
def mainFunc(request):
    return render(request,"home.html")

 

 

 

 

[View]


MVC의 Controller와 같은 역할이다.

웹 요청에 따라 적절한 로직을 수행하여 전달받은 데이터들을 가공해서 그 결과를 Template에 보내준다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
안녕하세요!
</body>
</html>

 

 

 

 

[URLconf(URL 설계)]


URL은 View와 Template을 매핑하는 역할을 하고, 이 부분을 만들어 주는 작업을 URLconf라고 한다. 

"""blog URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from promptapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.mainFunc), 
    
]

 

 


위의 과정을 그림으로 나타낸 것이다.