이번 프로젝트에서는 백엔드 개발에 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이다.
app 디렉토리는 하나의 웹 앱을 구성하는데 필요한 소스파일을 포함하고 있다.
DRF란 Django안에서 Restful API를 쉽게 사용할 수 있도록 도와주는 파이썬 오픈소스 라이브러리이다.
이번 프로젝트에서는 프론트엔드 서버와 백엔드 서버를 나누고, 프론트엔드 서버에서 백엔드 서버로 API요청을 통해 데이터를 주고받기 때문에 Django를 풀스택 프레임워크로 사용하지 않았다. 즉, Template를 사용하지 않고 API요청이 들어오면 Json형식으로 데이터를 넘겨주기만 하면 되기 때문에 이를 쉽게 구현할 수 있도록 도와주는 DRF 라이브러리를 사용하였다.
DRF는 Serializer를 통해 Django 내부에서 사용되는 model을 json형태로 직렬화하여 사용자에게 보내거나, 사용자로부터 받은 Json요청을 역직렬화하여 model에서 다룰 수 있도록 도와준다.
이외에도 기본적인 CRUD작업을 APIView, Mixins, Generic View, ViewSet등으로 구현해두었기 때문에 이를 상속받아 사용하기만 하면 간단하게 API서버를 구축 할 수 있다는 장점이 있다.