일자 : 2021.05.10(월) ~
MVC 패턴을 기반으로 한 Model - View - Template 패턴
Model
: View에서 주고 받는 데이터 형식을 정의, DataBase(DB)
the Model contains the logical file structure of the project and is the middleware & data handler between database and view.
View
: 데이터를 처리하는 영역, MTV 중 핵심역할
the View in this MTV architecture is formatting the data via the model.
In turn, it communicates to the database and that data which transfer to the template for viewing.
Template
: 사용자에게 보여지는 영역 (HTML, CSS, JS, 템플릿 언어 등이 이에 해당)
the Template is making the life of a frontend developer easy that's for sure. It also provides more development speed then the traditional MVC architecture would
프로젝트, 그리고 앱(app)
앱은 하나의 장고 프로젝트를 기능별로 나눈 것이며, 이를 통해 유지/보수가 용이해진다.
쉽게 말해 앱이 모여 프로젝트가 된다.
Project가 App들을 총괄.
app1
이라는 앱을 하나 만들자$ python manage.py startapp [앱이름]
주의 : 가상환경을 실행한 상태여야 하며, manage.py를 실행시킬 수 있는 경로여야 한다.
이런 식으로 앱 이름의 폴더가 생성되었음을 알 수 있다.
단순히 app을 만들었다고 자동으로 project로 연결되지 않는다.
따라서 project에 app을 만들었다고 알려주어야 한다.
myproject/settings.py에 들어가서 INSTALLED_APPS에 생성한 앱의 이름을 추가하여 준다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1.apps.App1Config', # [앱이름].apps.[앱이름(앞 대문자)]Config <-- 이렇게 추가하기도 함.
]
우선 장고로 만든 웹서버가 사용자의 요청을 받아 처리하는 과정은 다음과 같다
- 사용자(클라이언트)가
url
을 통해 서버에게 요청을 보낸다.- 서버의 view는 model에게 요청에 필요한 데이터를 받는다.
- view는 받은 데이터를 적절하게 처리하여 template으로 넘긴다.
- template은 받은 정보를 사용자에게 보여준다.
이 과정을 역순으로 코드로 작성해 본다. (template(HTML) → views → url)
app1 폴더 아래에 templates
라는 폴더를 만들고 그 아래에 index.html
을 만든다. - myproject/app1/templates/index.html
방금 만든 html에 텍스트가 나올 수 있도록 아래의 코드를 작성해준다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
Hello, World!
</body>
</html>
🐌 vscode에서 ! → Tab
을 해주면 HTML 기본 골격이 자동완성 된다.
def index(request):
return render(request, "index.html") # index.html을 랜더링
path('', views.index, name="index"),
''
: 도메인 뒤에 붙는 path 부분(현재는 비워둔다.)views.index
: app1의 views.py에서 정의내린 index 함수를 실행하라.name=index
: 이 path의 이름을 'index'라고 한다.from django.contrib import admin
from django.urls import path
from app1 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name="index")
]
터미널 창에 python manage.py runserver
를 입력하여 서버를 실행시킨다.
다음과 같이 잘 출력된다면 성공!
그 다음 Ctrl
+ C
를 눌러 서버를 종료 시킨 후 아래의 코드를 터미널 창에 입력하여 가상환경도 종료한다.
$ deactivate
작업 순서는 다음과 같다.