[엉박사] 1.3 장고 프로젝트 구조 및 DRF 소개

impala·2023년 1월 12일
0
post-thumbnail

1.3.1 Django 프로젝트

이번 프로젝트에서는 백엔드 개발에 Django 프레임워크를 사용하였다.

Django는 파이썬 기반의 웹 풀스택 프레임워크로 MTV(Model-Template-View)패턴을 활용하여 빠른 시간안에 기본적인 웹 서비스를 개발하고 배포할 수 있도록 도와주는 프레임워크다. MTV패턴은 간단하게 설명하자면 MVC패턴의 View가 Template로, Controller가 View로 바뀐 것이다.

장고 프로젝트의 기본적인 구조는 아래와 같다.

├─config
│    asgi.py
│    settings.py
│    urls.py
│    wsgi.py
│    __init__.py
│          
└─app
     admin.py
     apps.py
     models.py
     tests.py
     urls.py
     views.py
     __init__.py
     (serializer.py)
     (signals.py)
     (services.py)
     ...

config 디렉토리는 Root디렉토리로써 프로젝트의 전체적인 세팅과 빌드에 관련된 파일들이 포함되어있다. 가장 자주 사용되는 파일은 settings.py와 urls.py이다.

  • settings.py : 프로젝트의 설정파일. 의존성, 암호키 등 여러가지 설정내용들을 담고있다.
  • urls.py : 1차 url파일. url주소를 보고 알맞은 앱으로 요청을 넘겨주는 역할을 담당한다.

app 디렉토리는 하나의 웹 앱을 구성하는데 필요한 소스파일을 포함하고 있다.

  • admin.py : 장고에서 기본 제공하는 어드민페이지를 커스터마이징하는 파일
  • apps.py : 앱의 기본 설정 정보를 담고 있는 파일
  • models.py : MVT패턴의 Model에 해당하는 파일. 모델에 대한 정보가 담겨져있고, 테이블 및 테이블 필드가 정의되어있음. DB에 저장되는 테이블과 필드가 선언되는 파일이라고 보면 된다.
  • test.py : Test Code를 작성하는 파일
  • urls.py : 2차 url파일로 1차 url로부터 분류된 요청을 받아 구체적인 View에 연결한다.
  • views.py : MVT패턴의 View에 해당하는 파일. 사용자의 요청을 받아 처리하는 부분이다. 모델에 데이터를 저장하거나 모델에서 데이터를 꺼내와 사용자에게 넘겨준다.
  • serializers.py : DRF에서 Json직렬화를 담당하는 파일
  • signals.py : 앱에서 특정한 작업이 발생했을 때 별도의 처리가 필요한 경우 사용하는 파일.
  • services.py : 서비스로직을 분리하여 관리하기 위한 파일. 필수는 아니다.

1.3.2 DRF(Django Rest Framework)

DRF란 Django안에서 Restful API를 쉽게 사용할 수 있도록 도와주는 파이썬 오픈소스 라이브러리이다.

이번 프로젝트에서는 프론트엔드 서버와 백엔드 서버를 나누고, 프론트엔드 서버에서 백엔드 서버로 API요청을 통해 데이터를 주고받기 때문에 Django를 풀스택 프레임워크로 사용하지 않았다. 즉, Template를 사용하지 않고 API요청이 들어오면 Json형식으로 데이터를 넘겨주기만 하면 되기 때문에 이를 쉽게 구현할 수 있도록 도와주는 DRF 라이브러리를 사용하였다.

DRF는 Serializer를 통해 Django 내부에서 사용되는 model을 json형태로 직렬화하여 사용자에게 보내거나, 사용자로부터 받은 Json요청을 역직렬화하여 model에서 다룰 수 있도록 도와준다.

이외에도 기본적인 CRUD작업을 APIView, Mixins, Generic View, ViewSet등으로 구현해두었기 때문에 이를 상속받아 사용하기만 하면 간단하게 API서버를 구축 할 수 있다는 장점이 있다.

0개의 댓글