Python/Django / / 2022. 12. 28. 13:12

Django 준비 - WSL2에 Django 설치하기, MVC, MVT알아보기

So What is Django?

대표적인 파이썬 기반 풀 프레임워크로 파이썬의 장점과 단점을 모두 반영하고 있는 극단적인 장단점을 가지고 있는 프레임워크라고 나는 생각한다. 일단 파이썬의 장점인 다양한 라이브러리의 사용과 용이한 개발이 있겠지만, 속도에 대한 한정적인 스피드가 나와서 단점이라고도 볼 수 있다. 그러면 이 글에서는 간단하게 Django의 특징을 비롯해, Pyenv를 통한 Django를 설치하고 그에 맞는 여러 라이브러리들을 추가해 보도록 하겠다.

 

Django, MVT Pattern and MVC Pattern

MVC 패턴은 많이들 들어보셨을 패턴이다. Model, View, 그리고 Controller라는 구성요소로 역할을 구분한 패턴이다. 먼저 Model의 경우 Application이 무엇을 할지 - DB와 상호작용(CRUD)나 데이터 처리 등등 - 을(를) 말하는 부분이다. 내부 비즈니스 로직을 처리하는 역할을 맡는다. Controller는 모델에서 어떻게 활동을 할지 알려주는 역할을 한다. 사용자의 요청을 받아 처리하는 부분을 구현한다 View의 경우 화면에 보여주는 역할을 한다. 말 그대로 화면에 데이터를 쏴주는 역할을 한다.

 

즉 이것을 다시 정리하자면 다음과 같다.

  • Model - 데이터를 처리하고, 저장하고, 이에 대한 모든 데이터를 가지고 있어야 하며, 뷰나 컨트롤러에 대한 정보를 가지고 있지 않아야 하며, 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 한다.
  • View - 모델의 데이터를 따로 저장하면 안되며, 모델처럼 다른 요소들을 몰라야 한다.
  • Controller - 모델이나 뷰에 대해서 변경점 및 차이점을 인지하고 있어야 한다.

그렇다면 이런 MVC가 아닌 Django의 MVT는 무엇일까?

 

MVT패턴을 간단하게 보면 MVC의 Controller가 View로 그리고 MVC의 View가 Template로 변경된 것으로 보일 것이다. 하지만, View를 자세히 보면 Business Logic이 있으며 HTTP 리퀘스트와 리스폰스를 처리한다. 그리고 Template의 경우 단순히 HTML코드를 렌더링하는 역할을 한다. 둘의 비교를 표로 정리하면 다음과 같다.

 

MVC(Model-View-Controller) MVT(Model-View-Template)
MVC의 경우 Controller가 있으며 이 컨트롤러가 모델과 뷰를 동시에 다룬다.  MVT의 경우 View가 있으며 HTTP Request와 HTTP Response를 반환해준다.
View는 유저의 데이터가 어떻게 보여질지 알려준다. Template는 유저의 데이터가 어떻게 보여줄지 알려준다.
MVC에서는 Controller의 Control을 자세하게 써주어야 한다. Controller 부분은 프레임워크에 의해 관리된다.
굉장히 연결성이 높게되어 있다. 연결성이 느슨하게 되어있다.
수정이 어렵다. 수정이 그나마 편하다.
큰 프로젝트에서 사용하기 적합하다. 작거나 중간 크기의 프로젝트에 사용하기 좋다.
흐름이 아주 명확하게 보인다. MVC에 비해 흐름을 확인하기 어렵다.
URL매핑이 없다. URL패턴 매핑이 있다.
예시 - ASP.NET MVC, Sprint MVC  예시 - Django

 

Django Version - LTS

Django의 경우 LTS버전과 그렇지 않은 버전이 있다. LTS 버전은 x.2로 되어 있으며 나머지 버전들은 그렇지 않다고 보면 된다. Django 홈페이지에서는 다음과 같이 릴리즈 넘버를 설명하고 있다.

  • Feature Released (A.B, A.B+1, etc.) - 이러한 피쳐 릴리즈는 8개월 마다 릴리즈 되며, 새로운 특징과 개선점을 가지고 있다.
  • Patch released (A.B.C, etc.) - 필요에 의해 릴리즈되며, 버그나 보안 이슈를 고친 버전이다. 이 릴리즈의 경우 해당되는 피쳐 릴리즈에 100%호환된다. "가장 최신 버전의 patch release로 업그레이드 해야되나요?"에 대한 대답은 언제나 "YES"이다.

현재 지원되는 버전은 3.2 LTS, 4.0, 4.1이다. 이 글에서는 3.2 LTS를 사용할 것이다.

 

Install Django

pip install Django==3.2.16

위와 같이 설치해주면 일단은 성공이다. 그 다음 다음과 같이 Python 쉘을 열고 입력해서 버전을 확인할 수 있다.

 

>>> import django
>>> print(django.get_version())
3.2.16

그 다음 Django프로젝트를 만들어 보면된다. django-admin startproject start-my-project를 입력해서 프로젝트를 만들 수 있다. 물론 start-my-project에는 자신이 원하는 프로젝트 이름을 쓰면 된다. 그리고 프로젝트에 들어가면 다음과 같은 파일들을 볼 수 있을 것이다.

 

각각의 파일에 대해서는 다음 글에서 설명하도록 하고 일단은 shell에다가 다음과 같은 명령어를 쳐주자.

 

python manage.py runserver

그다음 127.0.0.1:8000으로 들어가면 다음과 같은 화면을 볼 수 있을 것이다.

위와 같은 홈페이지를 봤다면 성공이다! 이제부터 필요한 내용들을 하나씩 글에 담아보려고 한다.

728x90
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유