byidev.com
2023-06-22 18:20:33


1. MTV 패턴 & Django

  • MTV 패턴은 Model, Template, View의 약어.
  • Model은 앱의 데이터 관련부
  • Template은 사용자에게 보이는부
  • View는 중간에서 Model의 데이터 Template로 전달 Template에서 발생하는 이벤트를 처리하는부

MTV Pattern


2. Model

  • 앱의 데이터와 관련된 부분을 다루는 영역
  • 데이터베이스 저장 데이터 모양 정의 및 일부 기능 설정 영역
  • 개체의 특징을 뽑아 이를 구성 요소로 하느 것을 모델링이라 칭함
  • 모델링을 통해 나온 결과물을 모델이라 함
      1. 데이터 베이스 테이블과 같은 구조
      2. 모델 형태의 데이터가 쌓이며 데이터베이스 테이블이 된다
      3. 해당 모델을 데이터베이스에 적용시키는 과정을 **마이그레이션(Migration)**이라 칭함
      4. Django 가지고 있는 기본 모델 데이터베이스에 적용시키지 않았을 때 Migration 에러 발생ex. Model
      ID NAME PW EMAIL AGE SEX
      horang 호랑이 1234 horang@test.com 27 male
      yaong 야옹이 1234 yaong@test.com 29 male

3. View

  • Django의 View는 Template 과 Model 사이를 이어주는 중간 다리 역할
  • 단편적 역할
    • View는 Model을 통해 데이터에 접근하여 템플릿으로 부터 요청받은 데이터를 뽑아와 Template에게 답변을 송신
    • 즉, Front-end가 Back-end에게 데이터를 요청했을 때 Back-end에서 데이터를 뽑아 Front-end에게 제공하는 과정을 View가 처리
  • Django에서 가장 큰 비중을 차지하는것이 Model이라면 코드에서는 View가 가장 큰 비중을 차지
    1. Function View ( 난이도가 쉬운편 )
    2. Class View ( DRF 과정에서 부연 설명 )View는 만드는 방법이 다양하게 존재

3-1. URL

  • URL이란 웹 브라우저에서 특정 웹 사이트로 이동하기위해 사용되는 도구
    • URL은 라우팅의 역할과 동시에 서버로 해당 주소에 할당된 리소스를 요청하는 역할
    • 리소스는 Client가 웹 브라우저로 보는 HTML 페이지뿐만 아니라 내부를 채우는 데이터 등을 포함

4. Template

  • Django에서 템플릿은 사용자에게 보이는 부분
  • 웹 페이지의 골격, HTML로 작성된 부분

4-1. Django document - Template

  1. 템플릿에는 HTML 출력정적 부분과 동적 콘텐츠가 삽입되는 방법을 설명하는 특수 구문 포함
  2. Django 프로젝트의 템플릿은 여러 엔진으로 구성 가능, 또는 아예 사용하지 않을 수 있다
    1. 템플릿을 사용하지 않는 경우 0 값으로 설정
    2. Django Template Language(DTL)으로 불리는 자체 템플릿 시스템과 Jinja2를 제공
    3. 다른 템플릿 언어의 백엔드는 타사에서 제공
    4. 사용자 정의 백엔드 작성 가능 ⇒ 참조문서
  3. Django 1.8 Version 까지는 사용 가능한 유일한 내장 옵션이었다
    1. DTL은 독단적인 템플릿 라이브러리이지만, 다른 백엔드를 선택할 이유가 없다면 DTL 사용 권장
    2. 플러그형 애플리케이션을 작성중이거나 템플릿을 배포하려는 경우 더욱 권장
    3. 다음의 내용을 포함하는 Django의 contrib 앱은 DTL 사용 필수 ⇒ 참조문서
    4. 템플릿 엔진에 대한 일반 지원과 Django 템플릿 언어의 구현은 모두 django.template에 위치

5. Django의 특징

  • 일반적 HTML 구문과 99% 일치한다
  • 데이터 처리 및 Python 코드 작성이 가능한 Template Tag가 존재한다 ⇒ for, if 등 기본적 구문
  • Template Tag 는 다음과 같이 표현한다 ⇒ {}