Skip to content

Udemy의 "Build a Backend REST API with Python & Django - Advanced" 를 참고하여 작성된 코드입니다.

License

Notifications You must be signed in to change notification settings

jinsim/recipe-app-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

recipe-app-api source code

이 코드는 Udemy의 https://www.udemy.com/course/django-python-advanced/ 을 참고하여 작성되었다.

서론

위 강의는 TDD를 사용하여 파이썬에서 REST API를 빌드하는 방법을 알려주는 강의이다. 그 과정에서 Docker, Travis CI, Django REST Framework, Postgres DB, flake8을 사용하였다.

강의를 선택한 이유

Docker와 CI CD에 관심이 있었고, 직접 서비스에 적용해보고 싶어서 따라할 수 있기 쉬운 인터넷 강의로 결정하였다. 또한 Django를 어느정도 개발해보았지만 Django의 기능을 다 활용하진 못했다는 생각이 들어서 Django를 깊게 공부하신 분들은 어떻게 개발하는지를 알고 싶었다. 가장 큰 이유로, 한국어로 Django를 잘 설명해주고 있는 책이나 강의가 거의 없다. 있어도 기초를 다루는 것들이 대부분이라, DRF 공식 문서를 보고 필요한 기능을 오버라이딩하는 등 DRF에 대해 좀 더 깊고 응용 가능한 내용까지 담고 있는 컨텐츠를 찾지 못하였다.

강의 흐름

(1-3강) 사용할 기술들에 대한 간략한 소개 -> (4-10강) 기술들을 설정하는 방법 -> (11-16강) 개발 개발 내에서는 TDD 기법을 따라 test 폴더를 만들고, model을 테스트하고, model을 만들고, 작업을 테스트하고, serializer과 view를 만들고 url을 더하고... 전형적인 TDD 순서에 따라 개발하였으며, Unit Test의 단위는 endpoint를 기준으로 하였다. 완성될 페이지나 api가 어떤 식으로 작업될지를 미리 결정하고 그것에 맞게 테스트를 만든 후, 테스트를 통과할 수 있도록 코드를 작성하였다.

결과물

배포는 하지 않고 Django 로컬 서버로 진행한다. DRF에서 제공해주는 API 확인 사이트로 API의 Request와 Response만 확인한다.

유저 관리는 DRF의 authentication 클래스를 가져와 Token으로 인증한다. permission 역시 DRF의 내장 기능을 이용한다. 로컬에서 테스트를 할 때는 ModHeader라는 크롬 확장 프로그램을 활용하여 Authorization 값을 변경하여 활용한다.

사이트의 기능은 레시피 CRUD이며, 태그와 재료도 각각 CRUD 및 레시피를 필터링할 수 있다. 레시피 상세 페이지에서는 이미지도 업로드할 수 있다.

평가

우선 평가 전에, 아래에 필자의 현재 상황을 기술하였으니 참고 바란다.

  1. 영어 못함.
  2. Django REST Framework로 서비스 개발 및 운영 경험 있음.
  3. Mysql DB 사용 경험 있음.
  4. Docker, Travis CI 경험 없음.
  5. TDD 경험 없음.

DRF에 대한 많은 응용

Django REST Framework의 기능을 잘 활용하였다. auth_user 설정을 바꾸거나 get_queryset이나 get_serializer_class 같은 Django 내장 함수들을 상속하여 복잡한 일을 처리하는 등, Django를 잘 활용하였다. 수강생들에게 Django와 DRF가 얼마나 편리한지를 보여준다.

다만, Django나 DRF에 대한 공부나 이해가 부족한 사람들에게는 그저 따라쓰기밖에 되지 않을 것 같다. 강의 수강 전 후로 Django와 DRF 공식 문서를 몇 번 읽어야 원활하게 개발할 수 있을 것 같다. 또한 강의 수강 전에 기본적인 Django의 로직과 실행 과정을 알고 있어야 그 안에서 무엇이 중요하고 어떻게 응용할 것인지를 더 잘 배울 수 있을 것 같다.

생각보다 높은 난이도

위에도 언급했다시피, 난이도가 상당히 높다. Django의 로직, 실행 과정은 물론이고 자잘한 Django 내장 함수나 python 문법에 대한 내용도 전부 알고 있다는 가정 하에 수업이 진행된다. 따라서 수강생의 수준에 따라 추가로 검색이 필요할 수도 있으며, 추가 공부가 부족하다면 코드를 따라 치는 것에서 그칠 수도 있을 것 같다. 생각보다 많은 것에 대해 설명을 생락한다. 왜 이걸 사용하는 지에 대한 의문이 따라다닐 수 있을 것 같다.

난이도가 높은 만큼 전체적인 흐름을 놓치지만 않으면 많은 것을 배울 수 있다. Django나 DRF 공식 문서에 대한 언급도 꾸준히 하기에, 강의에서 진행한 것처럼 필요한 부분을 찾을 수 있는 능력을 기를 수 있다면 큰 도움이 될 것 같다. 가르치는 내용들도 매우 실용적이므로, 강의 내용을 바탕으로 새로운 프로젝트를 진행해보는 것도 좋을 것 같다.

영어로 진행되는 강의

누군가에게는 별 문제가 되지 않을 수 있지만, 나는 영어를 못한다... 게다가 미국식 발음도 아니다. 물론 구글에는 Udemy 강의에 자동으로 한국어 자막이 나오게 하는 스크립트도 존재하지만, 자막들에 오타도 많고 엔터도 자연스럽지 못해서 한계가 있다. 가장 좋은 방법은 공백을 없애는 스크립트를 돌려서 문장을 제대로 만들고, 그 문장 전체를 파파고를 돌린 후, 영어 듣기에 집중하며 이해가 되지 않는 부분은 번역으로 재확인하면 좋을 것 같다. 영어 잘하는 분들에게는 큰 단점은 아닌 것 같다.(부럽다)

About

Udemy의 "Build a Backend REST API with Python & Django - Advanced" 를 참고하여 작성된 코드입니다.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published