TIL.10)[Django] 시작하기전 알아두어야 할 개념들

django

GET / POST / PUT / DELETE

GET

  • Server 혹은 DB에게 resource를 보내달라고 요청하는 것.
  • resourceClient에게 전달만 될 뿐 변경되지 않는다.
  • Browser 주소창에 주소를 입력하면 이 신호는 항상 get으로 요청된다.
  • SQL = read

POST

  • Server 혹은 DB에게 resource를 보내면서 생성해 달라고 요청하는 것

    • ex) 회원가입을 하면 DB에 새로운 회원 정보가 등록 되면서 프로필 사진을 업로드하면 그 사진이 해당 회원의 프로필 사진으로 등록되는 것.
  • Django에서 주로 사용
  • SQL = create

PUT

  • Server 혹은 DB에게 resource의 업데이트를 하거나 resource가 없다면 새로운 resource를 생성해 달라고 요청하는 것
  • 회원 정보 수정 등에 사용된다.
  • SQL = update

PATCH

  • Server 혹은 DB에게 resource의 업데이트를 요청한다.
  • 회원 정보 수정 등에 사용된다.

💡PUT vs PATCH

  • PUT

    • Data에서 하나의 필드만 업데이트 하더라도 항상 모든 필드값을 가져와서 모든 필드를 항상 새로운 값으로 교체
  • PATCH

    • Data에서 하나의 필드값을 업데이트 시킬때 해당 필드값만 가져와서 해당 부분만 업데이트 한다.

DELETE

  • Server 혹은 DB에게 resource의 삭제를 요청한다.
  • SQL = delete

REST 와 Django url 맵핑

  • REST URL이 들어오면 URLconf에 사전 정의된 규칙에 의해 Django에서 함수를 호출한다.

    • 💡URLconf : django에서는 URLconfurls.py에서 관리한다.

MVC vs MVT

MVC (Model View Controller)

  1. Model

    • 데이터를 처리하며 데이터베이스와 상호 작용하는 인터페이스 역할을 한다.
    • 기본적으로 데이터베이스의 복잡성에 얽매이지 않고 데이터와 상호작용 할 수 있다.
  2. View

    • 웹 응용 프로그램인 브라우저에 실제 사용자에게 표시되는 프레젠테이션 로직을 처리
    • 실제 브라우저라는 응용 프로그램의 UI를 나타낸다.
  3. Controller

    • View에서 핸들러의 흐름을 처리하거나 Model의 데이터를 업데이트 처리하는 로직을 제공한다.

MVT (Model View Template)

  • 위의 MVCDjango에서는 MVT라고 한다.
  • MVTMVC와 각각 다음과 같이 매칭된다.

Django Workflow

1️⃣ Client ➡️ URLconf(urls.py)

  • 브라우저 또는 Application 사용자가 request를 보내면 Django에서 해당 REST URL을 URLconf(urls.py)에서 사전 정의된 함수가 있는지 확인하는 과정
  • 만약, 해당 REST URL과 매칭되는 URL이 없다면 Status Code : 404를 반환한다.

2️⃣ URLconf(urls.py) ➡️ View(views.py)

  • URLconf(urls.py)와 매칭되는 VIew(views.py)함수를 실행한다.

3️⃣ View(views.py) ➡️ Model(models.py)

  • 사용자에게서 받은 request를 확인하고 만약, 데이터베이스에서 해당 요청을 처리해야 할 경우 데이터 관리를 하는 Model(models.py)에게 해당 요청을 처리할 것을 지시한다.

    • 💡만약 데이터베이스 접근이 필요 없는 요청일 경우 위 과정을 거치지 않고 바로 Template에서 적절한 페이지를 찾아 response해준다.
  • Client요청에 따른 Application 실행 결과를 Template 혹은 Error msg등을 이용해서 다시 Client에게 response해준다.

4️⃣ Model(models.py) ➡️ Database

  • View(views.py)에서 받은 요청을 Database에서 처리하여 그 결과를 다시 View(views.py)에게 전달해준다.

    • 💡대표적인 Database 처리

      1. Create : 생성
      2. Read : 읽기
      3. Update : 갱신
      4. Delete : 삭제
  • ORM (Object Relational Mapping)를 사용한다.
  • Class를 이용하여 맵핑한다.

💡ORM?

  • 객체 관계 데이터베이스
  • 소프트웨어 개발자가 스스로 데이터 형과 메서드(=객체의 class)를 자유롭게 정의하여 데이터베이스를 개발할 수 있는 데이터베이스 관리 시스템
  • Django에서는 Model Calss를 통해서 객체를 만들고 이 객체를 통해서 DB에 접근하도록 도와준다.

5️⃣ View(views.py) ➡️ Template (*.html)

  • Model(models.py)에서 처리된 결과를 Template에 전달하여 적절한 페이지 (html)를 찾는다.

6️⃣ Template(*.html) ➡️ Client

  • html파일과 Database에서 처리된 결과를 조합하여 페이지를 사용자에게 전달한다.

Written by@Yongineer
Backend Developer

GitHubInstagram