https://00pen.tistory.com/87

 

Django Rest framework 와 React로 포트폴리오 만들어보기(2)

https://00pen.tistory.com/85 Django Rest framework 와 React로 포트폴리오 만들어보기(1) 노마드코더(nomad coder) 에어비앤비 클론 코딩 후기 2달에 걸친 풀스택 에어비앤비 클론 코딩을 드디어 끝냈내요. 이..

00pen.tistory.com

처음에 계획할 때 8월 15일까지 끝내겠다고 했는데 계획은 반은 지켜지고 반은 안 지켜졌다고 할 수 있을 것 같다. 왜냐하면 오류없이 8월 15일까지 만들기는 만들었다. 근데 테스트를 하면 할 수록 조그만한 오점들이 계속 나오는 것 같다. 그래서 직접 테스트하거나 Django Restframework 에서 제공하는 test 모듈로 TDD를 진행하는 중이다.

 

프로젝트를 끝내면서 느낀 점은 크게 두가지다.

첫 번째는 기획/계획이 굉장히 중요했다는 것. 아이디어이 생각난 후에 이틀 정도 구상한 후 프로젝트를 만들기 시작하였는데 만들면서 Django의 model 부분 즉, Database에 저장될 스키마, 가 여러 번 수정되었다. 그러면서 오류도 많이 생기고 고치는데도 시간이 꽤 소요되었는데 이래서 데이터베이스를 설계하는 사람이 따로 필요한 건지 알게 되었다.

두 번째는 빌드는 빠른데 오류/예외들을 처리하는 것이 더 오래 걸리겠다는 것. 찾아보니 QA 분들이 정석루트를 해피패스라고 부르는 것을 알게 되었는데 나는 해피패스 외에 적은 예외만 처리해 왔다는 것을 알게 되었다. 아주 완벽하게 서비스를 만드려면 대충 다 만들고 Quanlity Assurance에 시간을 많이 투자해야할 것 같다는 생각을 하게 되었다.( 작은 프로젝트에서는 그냥 만들고 일부 사용자들이 사용해보고, 피드백을 받아 고치는 것도 좋다는 것을 알게 됨. )

 

이제 Django를 어느 정도는 다룰 수 있게 되었다고 생각한다. 하지만 공부하면 할 수록 부족하다는 것이 느껴져 Django도 dbshell과 서버에 deploy하는 것을 더 배우고, 네트워크랑 데이터베이스도 계속 공부해봐야겠다. 아무튼 개인 프로젝트를 만들면서 재밌었고, 끝내서 보람찼다.

 

 

Frontend 결과물 예시: https://qhqnf.github.io/asset-dashboard-fe/#

asset dashboard

Frontend github: https://github.com/qhqnf/asset-dashboard-fe

Backend 결과물 api 문서: http://asset-dashboard-dev.ap-northeast-2.elasticbeanstalk.com/swagger/

Backend github: https://github.com/qhqnf/asset-dashboard

https://00pen.tistory.com/85

 

Django Rest framework 와 React로 포트폴리오 만들어보기(1)

노마드코더(nomad coder) 에어비앤비 클론 코딩 후기 2달에 걸친 풀스택 에어비앤비 클론 코딩을 드디어 끝냈내요. 이 코스를 통해 python과 Django를 배울 때는 재밌어서 하루도 빠짐없이 코딩을 했습�

00pen.tistory.com

7월 25일에 시작해서 8월 1일로 백엔드를 얼추 다 만들었습니다. 처음으로 혼자서 처음부터 끝까지 만들어보니 기획/계획의 중요성과 디자인 패턴의 중요성도 알게 된 것 같습니다. 왜냐하면 약 3일 정도 삽질을 한 게 욕심내서 APIView로 하나하나 만들어 보려다 코드가 점점 더러워져서 Viewset으로 바꾸어 만들었습니다. 2일 동안 만든 코드가 Viewset으로 바꾸니 하루만에 다 고칠 수 있을 정도로 Viewset는 편리했습니다. 그리고 나머지 customizing이 필요한 부분만 APIView로 커버했습니다.

가장 재밌으면서 오래 걸렸던 부분은 Django ORM을 이용해서 total asset을 구하는 부분이였는데 transaction_type이 Buy와 Sell 둘로 나누어져 있어 이걸 Case를 이용해 Buy는 +로 Sell은 -로 새로운 field를 만들어주고, 합쳐주는 쿼리문을 만든 것이었습니다. 처음에는 어렵게 느껴졌지만 계속 새로고침하면서 에러를 통해 고쳐나가니 빠르게 배울 수 있었습니다. 

총 자산 구하기

이 쿼리문 하나 만드는데 Django Document와 블로그 글을 통해 1시간 넘게 걸린 것 같은데 아래의 transaction을 POST받을 때 자산에 음수가 나오지 않도록 하는 것을 만드는데는 10분도 안 걸린 것 같습니다.ㅋㅋ

transaction create할 때 validate하기

이제 이걸 배포하고 React를 이용해 Front-end를 만들고 이어주는 것만 남았는데 백엔드 만드는데만 하루에 2~3시간씩 약 8일이 걸렸는데 대략 끝내기까지는 예상한 대로 2주는 더 걸리지 않을까 생각이 듭니다.

Github 주소: https://github.com/qhqnf/asset-dashboard

Function Based View를 사용하고 싶으면 @api_view

 

Class Based View 사용하고 싶으면 APIView, Generics.~~APIView, Viewset 중 하나

APIView는 View(Rest Framework에 있는게 아닌 Django에 있는 것)를 상속받긴 하지만 거의 백지상태. 안에 만들고 싶은 Http method를 골라서 만들어주면 됨. (ex. get, post, put, delete ...)

Generics.~~APIView와 APIView 사이에 GenericAPIView가 있긴 한데 둘을 이어주는 징검다리 느낌. GenericAPIView를 써본 적은 없음. 이제 ListAPIView, ListCreateAPIView, DestroyAPIView 등등이 있는데 단어 하나가 붙을 때마다 그 Mixin같이 따라 온 거라 보면 됨. (ex. ListAPIView는 APIView에 ListModelMixin이 같이 와서 List Method를 이미 어느정도 만들어 놓음)

Generics에 있는 View들은 get, post, put, delete method를 잘 가공해서 List( or Retrieve), Create, Update, Destory로 만들어 놓음. 그래서 get, post method를 보면 그냥 가공해 놓음 List( or Retrieve), Create method를 부르기만 함.

get과 list
post와 create

Viewset과 APIView 사이에도 GenreicViewset이 있긴 한데 이것또한 징검다리 같은 느낌. Viewset들은 위의 Mixin들은 많이 넣어서 더 편리하게 만들어 놓음. ModelViewSet은 Mixin들을 모두 넣어 놓았고, ReadOnlyModelViewSet은 get만 가지도록 List와 Retrieve Mixin만 가져옴.

ModelViewSet
ReadOnlyModelViewSet

참고 문헌: http://www.cdrf.co/

 

Django REST Framework 3.9 -- Classy DRF

What is this? Django REST framework is a powerful and flexible toolkit that makes it easy to build Web APIs. It provides class based generic API views and serializers. We've taken all the attributes and methods that every view/serializer defines or inherit

www.cdrf.co

 

노마드코더(nomad coder) 에어비앤비 클론 코딩 후기

2달에 걸친 풀스택 에어비앤비 클론 코딩을 드디어 끝냈내요. 이 코스를 통해 python과 Django를 배울 때는 재밌어서 하루도 빠짐없이 코딩을 했습니다. 5월에는 천천히, 6월에는 2배 정도 빠르게 했�

00pen.tistory.com

약 5개월에 걸쳐 nomad coder을 통해 풀스택 개발자로 성장하기 위해서 강의도 많이 들었고, 이제는 정말 직장에서 일을 하면서 돈도 벌고, 기업에서 경험을 쌓아야 겠다는 생각에 나만의 웹사이트나 앱을 만들어 포트폴리오를 만들어보고자 생각이 들었습니다.

계획은 자신의 자산 상태를 여러 그래프로 보여주는 Dashboard를 만드는 것입니다. 에어비앤비 클론 코딩을 할 때는 오직 Django로만 풀스택 개발을 했지만 기업에서는 대부분 백앤드와 프론트앤드를 나누어 개발하는 것이 일반적이기 때문에 그에 맞추어 Django (+ Rest Framework)로 백앤드 API 서버를 만들고, React와 Redux를 이용해 프론트엔드를 만들 예정입니다.

저는 2주일 안에 끝내는 것으로 잡고 싶었으나 주변 개발자님들의 말을 들어보면 그렇게 마음대로 되지는 않을 거라는 말을 들어 3주~4주를 목표로 잡았씁니다. 지금은 이미 백앤드 API 서버를 만들고 있는 중이고, 시작한지 3주가 되는 날은 8월 15일이네요.

 

프로젝트명은 asset-dashboard.

지금까지 진행상황은...

 

7월 25일 - 간단하게 머리 속 계획을 그림으로 그려보고, Django와 더불어 필요한 것들 설치

개발환경은 간단하게 Ubuntu 16.04(WSL로 윈도우에서 사용), VS Code로 했고, pipenv로 가상환경을 꾸려서 함

 

7월 26일 - 일단 백엔드 API에 필요한 주식정보(현재가, 종목코드) 가져오는 crawler 코드 먼저 짬

https://00pen.tistory.com/84

 

Marketdata.krx 종목코드, 현재가격 가져오기

주식데이터를 가져오는 방법으로는 증권사 api도 있고, github에 올려져 있는 여러 코드들도 있지만 Django 백앤드에 필요한 상장주식코드(ETF 포함)만 가져오는데 무겁게 하기 싫어 코드를 짜보았습

00pen.tistory.com

 

7월 27일 - crawler 코드 정리하고, Django에서 db로 넘겨주도록 commad 생성, 주요 Model과 Serializer, View 생성

Github 주소  - https://github.com/qhqnf/asset-dashboard

https://00pen.tistory.com/87

 

Django Rest framework 와 React로 포트폴리오 만들어보기(2)

https://00pen.tistory.com/85 Django Rest framework 와 React로 포트폴리오 만들어보기(1) 노마드코더(nomad coder) 에어비앤비 클론 코딩 후기 2달에 걸친 풀스택 에어비앤비 클론 코딩을 드디어 끝냈내요. 이..

00pen.tistory.com

 

+ Recent posts