Django | MVT Pattern

김민호·2021년 9월 7일
0

DJANGO

목록 보기
1/18
post-thumbnail
  1. M.V.T Pattern이란 Django에서 프로젝트를 구성할 때 쓰는 형식(?)이며, model, view, template 이 세가지로 구성되어 있다
  2. 웹 프레임워크란 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다

라이브러리와 프레임워크

  • 라이브러리(library) : 자주 쓰이는 기능들을 모아 놓은 유틸(클래스)들의 모음집. Class 나 Function으로 만들어짐. 재사용 가능
    라이브러리가 설계까지 해주는 것은 아니다
  • 프레임워크(framework) : 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것. 라이브러리랑 달리 애플리케이션의 틀과 구조를 결정할 뿐만 아니라 그 위에 개발된 개발자의 코드도 제어한다. 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다. 다시 말해서,
    프레임워크 = 확장 가능한 기반 코드(class) + 확장에 필요한 라이브러리

Django framework

스트럿츠 프레임워크, 스프링 프레임워크, 앵귤러JS 같은 것들이 있고 앞으로 쓸 Django framework의 특징은

  • 파이썬 언어 기반
  • MVC 패턴 기반 MTV (기본적으로 Model-View-Controller 를 기반으로 한 프레임워크)
  • ORM(Object-relational mapping) 기능 지원
  • 쉬운 DB관리를 위해 프로젝트를 생성하면서 관리자기능을 제공
  • 쉬운 URL 파싱 기능 지원
  • 동일한 소스코드에서 다른 나라에서 용이하도록 번역, 날짜/시간/숫자 등의 포맷 타임존 지정 등의 기능을 제공

웹 프레임워크 Django

웹 프레임워크

= 웹 애플리케이션 프레임워크.
동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함

MVC, MTV

디자인패턴 두가지

MVC :

MTV : Django 장고에서는 control 대신 template라는 용어로 씀

  1. Model = date라고 생각. 데이터베이스 서버에 저장.
  2. View = 데이터를 유저한테 보여주는 것
  3. Control, Template = 사용자의 입력과 이벤트에 반응하여 Model과 view를 업데이트

거의 대부분의 프로젝트들은 이 세가지로 분리를 하면 시스템 구성이 가능함!

model, controller, view, user의 관계

user가 controller에서 다양한 이벤트나 인풋을 조작함
그럼 controller는 model에 있는 데이터를 가지고 와서 가공 후에 view에 보내고 다시 user에게 보내지던지
user가 인력을 한다면 controller가 그 입력을 모델에 쓰고
이런 유기적인 관계다

Django 구성

  1. 유저가 데이터를 입력한다던지 url을 클릭한다던지 이벤트가 발생하면 장고 서버로 들어감
  2. 그럼 url dispatcher에서 유저가 요청한 url을 분석해서 그 url에 적합한 view로 보내주게 됨
  3. view는 사용자 요청을 받아서
  4. model에서 실제적으로 database와 연결을 하는 것
  5. 그럼 다시 database가 model로 데이터를 보내주고 model이 데이터를 view로 보내주게 됨
  6. 그럼 view가 실질적으로 유저한테 보여질 데이터를 template에 보내주게 됨
  7. template가 다양한 user interface를 만들어서 web browser로 넘겨줌

Middleware 라는 것들은 django 뒤에서 다양한 처리를 도와주는 역할

  • 브라우저에서 요청을 보내게 되면 WebSeverGatewayInterface 라는 곳으로 신호가 들어옴. 이게 웹 서버와 장고를 연결시켜주는 역할
  • 그럼 이제 그 요청을 URL RESOLUTION 이라는 파이썬 코드에서 받게 됨. 이게 정규표현식으로 구성이 돼 있기 때문에 그 정규표현식에 맞게 끔 view로 보내주게 됨.
  • 이 VIEW에서 우리가 파이썬 코드를 많이 작성하게 될 것 그럼 이 VIEW가 이제 데이터베이스에 데이터를 입력을 하던지 아니면 데이터베이스에서 데이터를 받아와서 사용자한테 보여줄건지 결정해서 MODEL에 신호를 보냄
  • sql 쿼리 작성 역할은 MANAGERS가 하기 때문에 따로 작성하지 않아도 되고, 변수만 다루면 됨!
  • 사용자에게 보여주기 위한 UI작업은 template로 만들어서 다시 웹서버로 전송. template로는 html파일인데 이 안에 로직을 삽입. FORM을 통해서 view와 template가 관리되는 것

Django 설치 후 폴더 및 파일 생성

  • $ django-admin startproject 프로젝트이름 -> 프로젝트 생성
  • $ ./manage.py startapp 앱이름

setting.py

  • DEBUG : 개발할 때는 true, 배포할 때는 false
  • ISTALLED_APPS : 내가 만든 app이나 남이 만든 app을 쓸 수 있음. 남이 만든 것은 pip로 설치
  • MIDDELWARE_CLASSES
  • TEMPLATES : html 파일과 다양한 변수들을 view에서 다루게 되는데, templates 파일과 관련된 변수들을 조정하는 context와 templates를 검색하기 위한 다양한 기능들, 폴더 위치들을 다루는 설정 파일
  • DATABASES : 다양한 데이터베이스를 쓸 수 있게 해주는 데이터베이스 설정 파일
  • STATIC_URL : html과 관련된 css, javascript, image와 같은 다양한 정적파일과 관련된 디렉토리나 url을 다루는 것과 관련된 설정 파일

manage.py

  • 프로젝트 관리 명령어 모음

  • 주요 명령어
    • startapp : 앱 생성
    • runserver : 서버 실행
    • createsuperuser : 관리자 생성. 초기에 하나 생성해야 함
    • makemigrations app : app의 모델 변경 사항 체크
    • migrate : 변경 사항을 DB에 반영
    • shell : 쉘을 통해 데이터를 확인
    • collectstatic : static파일을 한 곳에 모음
  • ex) 서버생성
    ./manage.py runserver 0.0.0.0:8080
    (마지막 숫자는 무슨 의미인지 아직 잘 모르겠음)

이제 Django가 뭔지 알아본 것 같으니 설치를 해보자

profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀

1개의 댓글

comment-user-thumbnail
2021년 11월 30일

민호 마지막 숫자는 포트를 말하는거야??

답글 달기