Django/DRF 알아보기

Jimin·2023년 1월 6일

Django란 무엇일까?

Django?

파이썬 언어로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(Web application framework) 이며, 쉽고 빠르게 웹 사이트를 개발 할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크다.

장고를 사용하는 이유?

  • 구성요소들 간의 긴밀한 통합
  • 객체관계 매핑(Object-Realtional Mapper, ORM)
  • 간단한 URL 주소 설계
  • 자동으로 구성되는 관리자 화면
  • 풍부한 개발 환경
  • 다국어 지원
  • 간결하고 유지가 용이
  • 빠른 개발 시간

MVC 패턴 구조

Model

안전하게 데이터 저장

View

데이터 적절하게 유저에게 보여줌

Controller

사용자의 입력과 이벤트에 반응하여 model과 view 업데이트

장고에서는 컨트롤러(Controller)를 뷰(views)라고 하며,
뷰는 템플릿(template) 이며,
템플릿은 데이터를 사용자에게 보여주는 컴포넌트이다.
그래서 장고를 흔히 MVT프레임워크 (Model, View, Template)이라고도 한다.

출처

https://meongj-devlog.tistory.com/30


Web Framework는 무엇이고, 왜 필요할까?

Web Framework

웹 프레임워크는 웹 애플리케이션 및 웹 사이트를 개발하기 위한 소프트웨어 플랫폼이다.

웹 응용 프로그램 프레임워크는 미리 작성된 광범위한 구성 요소, 코드 조각 및 전체 응용 프로그램 템플릿을 제공합니다.

웹 개발 프레임워크는 웹 서비스, 웹 API(응용 프로그래밍 인터페이스) 및 기타 웹 리소스의 개발에 사용할 수 있습니다.

왜 프레임워크가 필요한가?

  1. 개발 및 유지 관리 프로세스를 훨씬 빠르고 쉽게 만든다.
  2. 코드 구조에 대한 표준화된 코딩 관행 및 규칙을 포함한다.
  3. 개발자의 프로그래밍 프로세스를 체계화하고 오류 및 버그를 방지한다.
  4. 데이터 바인딩 및 구성과 같은 모든 배경 세부 정보를 효율적으로 처리하여 앱에 전적으로 집중할 수 있다.

일반적으로 개발 프레임워크에는 클라이언트 측 프레임워크와 서버 측 프레임워크의 두 가지 유형이 있다.

  • 클라이언트 측 프레임워크
    사용자 인터페이스를 처리하는 데 사용된다.
  • 서버 측 프레임워크
    웹 사이트의 원활한 기능을 보장하기 위해 백그라운드에서 작동한다.

출처

https://bidshi-tec.tistory.com/86


DRF의 REST는 무슨 뜻일까?

API, REST API, RESTful

  1. API - 응용프로그램 데이터를 주고받는 규약.
  2. REST API - Json 형태로 CRUD 데이터를 주고받는 규약.
  3. RESTful - REST 방식을 따라서 개발하는 것.

여기서 REST 방식이라고 한다면,
자원과 이 자원에 대한 행위를 나눠서 작성하는 것을 말하며 간단한 예제로는
유저에 대한 것을 예로 들어서

  • GET /user : 유저의 정보들을 가져옴
  • GET /user/1 : 1번 유저의 정보를 가져옴
  • PUT /user/1 : 1번 유저의 정보를 수정함
  • POST /user/1 : 1번 유저를 만듦
  • DELETE /user/1 : 1번 유저를 삭제함

등의 방식으로 표현할 수 있다.
이것으로도 다 표현하지 못하는 경우가 있지만, 최대한 이렇게 일괄된 방식으로 구성하여 가독성과 효율성을 높인 구조화된 시스템 아키텍처라고 생각하면 된다.
이렇게 구성하게 되면 우리는 하나의 URI로 최소 4가지의 HTTP method를 사용할 수 있다.

그리고 여기서 URI를 설계할 때 지키면 좋은 점이 있다.

  1. 소문자를 되도록이면 사용
  2. 하이픈을 띄어쓰기 대신 사용
  3. 확장자를 사용하지 않기

DRF(Django REST Framework)

Django REST Framework

장고 안에서 RESTful 한 API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리입니다.

DRF의 큰 기능은 Models를 serializers(직렬화)로 변환하는 것이다.
이렇게 직렬화를 하여서 메모리에 존재하고 추상적인 Object를 String or bytes로 만들어서 드라이브에 저장도 가능하고 통신선으로 전송도 가능하게 만들어줄 수 있습니다.

장고와 DRF 차이

사진출처

직렬화와 역직렬화 도식도

사진출처

출처

https://velog.io/write?id=60471276-db10-44c8-8080-b97582270590


API, Restful API는 무엇일까?

API

API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다.

예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있는데,
휴대폰의 날씨 앱은 API를 통해 이 시스템과 ‘대화’하여 휴대폰에 매일 최신 날씨 정보를 표시한다.

API의 의미

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다.

API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다.

이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있다.

Restful API

오늘날 웹에서 볼 수 있는 가장 많이 사용되고 유연한 API이다.
클라이언트가 서버에 요청을 데이터로 전송한다.
→ 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환한다.

REST는 Representational State Transfer의 줄임말이다.

REST는 클라이언트가 서버 데이터에 액세스하는 데 사용할 수 있는
GET, PUT, DELETE 등의 함수 집합을 정의한다.

클라이언트와 서버는 HTTP를 사용하여 데이터를 교환한다.

REST API의 주된 특징은 무상태이다

무상태는 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미한다.

서버에 대한 클라이언트 요청은 웹 사이트를 방문하기 위해 브라우저에 입력하는 URL과 유사하다.
서버의 응답은 웹 페이지의 일반적인 그래픽 렌더링이 없는 일반 데이터이다.

REST API의 장점

REST API는 다음과 같은 네 가지 주요 이점을 제공한다.

  1. 통합
    API는 새로운 애플리케이션을 기존 소프트웨어 시스템과 통합하는 데 사용된다. 그러면 각 기능을 처음부터 작성할 필요가 없기 때문에 개발 속도가 빨라진다.
    API를 사용하여 기존 코드를 활용할 수 있다.

  2. 혁신
    새로운 앱의 등장으로 전체 산업이 바뀔 수 있다.
    기업은 신속하게 대응하고 혁신적인 서비스의 신속한 배포를 지원한다.
    전체 코드를 다시 작성할 필요 없이 API 수준에서 변경하여 이를 수행할 수 있다.

  3. 확장
    API는 기업이 다양한 플랫폼에서 고객의 요구 사항을 충족할 수 있는 고유한 기회를 제공한다.
    예를 들어 지도 API를 사용하면 웹 사이트, Android, iOS 등을 통해 지도 정보를 통합할 수 있다.
    어느 기업이나 무료 또는 유료 API를 사용하여 내부 데이터베이스에 유사한 액세스 권한을 부여할 수 있다.

  4. 유지 관리의 용이성
    API는 두 시스템 간의 게이트웨이 역할을 한다.
    API가 영향을 받지 않도록 각 시스템은 내부적으로 변경해야 한다.
    이렇게 하면, 한 시스템의 향후 코드 변경이 다른 시스템에 영향을 미치지 않는다.

출처

https://aws.amazon.com/ko/what-is/api/


가상환경은 무엇이고 왜 필요할까?

파이썬 가상환경

현재 설치된 파이썬 환경과 다른 독립된 환경

파이썬을 사용하다보면 여러가지 패키지를 설치해야 한다.
이 때, 패키지간에 dependency(의존성)가 있는 경우,
패키지 버전이 다르면 에러가 발생한다.
파이썬 가상환경을 이용하지 않으면 다수의 프로그램이 하나의 파이썬 개발환경을 이용한다.

가상 환경을 사용하면 생기는 변화
⇒ 위 그림 우측의 경우.
같은 인터프리터 버전을(Python 3.7.4) 사용하더라도 프로젝트별로 격리된 환경을 사용하기 때문에 패키지를 프로젝트별로 관리할 수 있다.
이처럼 가상 환경을 사용하면 프로젝트별로 안정적으로 패키지 버전을 관리할 수 있습니다.

⇒ 결국 독립된 환경에서 파이썬을 이용하기 위해 가상환경을 사용한다.

profile
https://github.com/Dingadung

0개의 댓글