본문 바로가기
개발공부/django

Django - 1

by dding-g 2019. 9. 30.

Django, Django REST framework, Django Swagger에 대해 공부할 예정이다. 이번 학기에 프로젝트가 너무 많아서.. 블로그 포스팅을 계속 미루게 되는데 시간날때마다 조금씩이라도 하도록 하겠다.

- 웹 API

웹 앱을 개발할 때 다른 서비스(유튜브, 지도 등등)에 요청해서 원하는 데이터를 가져오거나 데이터를 전송할 때 사용할 수 있다. 일반적으로 특정 URL로 요청하면 백엔드에서 미리 짜여져 있는 logic으로 데이터를 추출해서 원하는 서비스를 이용하게 해준다.

- REST API

백엔드에서 정해놓은 특정 URL로 사용자가 요청하면 원하는 데이터를 이미 백앤드에서 정해놓은 logic에 따라서 데이터를 반환해준다.

REST란?

Representational State Transfer

자원의 이름으로 구분해서 해당 자원의 상태를 주고받는 모든 것.

www와 같은 SW개발 아키텍처의 한 형식

URL만 요청하면 특정 파일 형식으로 데이터를 반환하기 때문에 요청 플렛폼에 상관없이 사용할 수 있다.

확장성 및 재사용성이 훌륭함. 유지보수가 쉽다.

- Django

Django는 파이썬으로 만든 무료 오픈소스 웹 Framework이다.

처음 URL에 접근하게 되면, URL이 어디로 가야하는지를 urls.py 에서 정규표현식을 이용해 지정해주고, setting.py 에서는 해당 application이 실행되기 위한 기본 app들을 추가시켜준다.

http://pythonstudy.xyz/python/article/305-Django-App

예제로 배우는 파이썬 프로그래밍 - Django App

Django App 1. Django App이란? Django App은 Django에서 사용하는 "파이썬 패키지"이다. Django App 패키지는 그 안에 자신의 모델(model), 뷰(view), 템플릿(template), URL 매핑 등을 독자적으로 가지고 있으며, 일반적으로 하나의 Django 프로젝트는 하나 이상의 Django App으로 구성되어 있다. 규모가 큰 Django 프로젝트는 보통 여러 개의 Django App들을 모듈화하여 구성하는데, 모듈화된 App들로 구성하면 개발 및 유...

pythonstudy.xyz

이해하는데 해당 포스팅을 참고했다.

- Django REST framework

본래 RSET API를 사용하려면 URL 매핑들을 일일이 다 해줘야 하지만, Django에서 제공하는 REST framework를 사용하면 쉽게 매핑하고 사용할 수있다.

https://medium.com/wasd/restful-api-in-django-16fc3fb1a238

 

RESTful API in Django

Django REST framework를 이용해 RESTful API를 개발해봅시다.

medium.com

Django REST framework를 공부하는데 도움이 되었던 글이다.

REST framework는 Model, View, Serializer로 구성이 되어 있는데 Model과 View는 많이 들어봤지만 Serializer는 처음들어봤다. Serializer(직렬화)는 Django ORM의 QuerySet은 Django Template로 넘어가서 html로 랜더링 된 후 response 하는데, html 코드를 json 형식으로 바꾸어주는걸 serializer 가 해준다.

QUERY를 날려서 얻은 결과를 Django는 html로 반환해주는데, 이걸 Json 형식으로 바꾸어주는걸 Serializer가 한다고 생각하면 될 것 같다.

View에서 Serializer 에게 Json 형식을 받아오길 원하고, Serializer는 Model에게 DB Query에 대한 데이터를 얻기를 원한다.

- Django Swagger

REST API를 사용하다 보면 내가 어떤 URL에 어떤 요청을 할 때 어떤 값이 반환되는지를 정리해야 하는 필요성을 느낄때가 있다. Django에서는 이런 문제점을 쉽게 해결하기 위해 Django Swagger라는 툴을 제공해서 자동으로 API 정보를 정리해준다. 또한 API 가 잘 동작하는지 테스트 용도로도 사용할 수 있다.

 

- Web Server

Apache vs Nginx

두 서버 SW의 가장 큰 차이점은 동기냐 비동기냐 이다. Apache는 요청한 클라이언트에 따라 프로세스를 생성하고 요청이 많을 때 각 프로세스의 스레드를 생성해서 처리하는 구조이다. 이 때 디폴트로 생성되는 프로세스들이

https://medium.com/sjk5766/%EB%84%8C-%EB%AD%90%EB%8B%88-nginx-9a8cae25e964 출처

https://medium.com/sjk5766/%EB%84%8C-%EB%AD%90%EB%8B%88-nginx-9a8cae25e964 출처

그림과 같이 유휴자원들이 많다. 반면 Nginx는 비동기 방식을 채택해 한가지 프로세스만 생성한 후 해당 프로세스에서 Event-driven방식으로 이벤트 처리하는 process를 던져주고 다른 일을 처리하며 중간에 유휴 시간 없이 효율적으로 process를 한다. 또한 CPU가 필요하지 않은 작업 ( I/O, socket read/write ) 을 바로 처리하고 그 후에 바로 이어서 CPU가 진행하던 작업을 이어서 한다.

'개발공부 > django' 카테고리의 다른 글

django CBV(Class-based views) vs FBV (Function-based views)  (0) 2020.04.20
django와 postgresql 연동  (0) 2020.04.20