Skip to content

jeongnaehyeok/buyk_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BuyK_server

2년전 크로컴퍼니 팀에서 진행하였던 BuyK 프로젝트를 다시 만들어보았습니다. 기존에 있던 코드를 최대한 이해하고 공부하면서 구현했습니다. 구현하기 힘들었던 기능 중 몇가지는 제외하거나 대체하여 개발하였습니다.

사용한 것

  • Django
  • Django-REST-framework
  • SQLite
  • Postman
  • Sourcetree

제거한 기능

  • 좋아요 기능
  • 회원정보 변경 및 소셜로그인
  • 자동완성 기능
  • 인기 검색순위 기능
  • 바이크 모델에 따른 타입 브렌드와 모델 선언

수정 및 추가한 기능

  • django-rest-auth를 이용한 회원가입, 토큰제공
  • jwt으로 인증받기
  • 접근권한 추가
  • 매물 삭제기능

공부하게 된것

실행

# 패키지 설치
$ pip install -r requirements.txt
# 마이그래이션
$ python manage.py makemigrations
$ python manage.py migrate
# 실행
$ python manage.py runserver 127.0.0.1:8000

추가 개발필요

  • permission을 이용한 접근 권한
  • serializer 및 view 통합

추가 하고 싶은 기능

  • django-allauth를 이용한 소셜로그인
  • Like기능
  • User 모델 변경

후기

2년전 기술스택 부족으로 인해 만들지 못했던 BuyK 웹 클라이언트 개발을 위해 API 서버를 만들게 되었습니다. 기존에 있던 코드를 계속 읽어보면서 최대한 이해하고 구현해보려고 노력해봤습니다. 기존에는 단위별로 코드를 읽고 이해했다면 서비스를 위한 짜여진 코드를 이해하는 것은 거의 처음이었습니다. 전체코드의 80%를 이해하는데 하루정도 소요가 된거 같습니다. 기존에 개발을 하면서 어떻게 구현될까 궁금하던 코드들을 직접보니 신기하고 더 열심히 공부 해야겠다고 느꼈습니다.

구현에 앞서서 기존 코드에서 자체적으로 구현하였던 User에 관한 문제(회원가입을 하고 토큰을 지급해주는 문제)를 어떻게 해결을 할까 고민이 많았습니다. 그래서 레퍼런스를 찾던 도중에 django-rest-auth를 이용한 회원가입과 토큰 제공에 대한 문제를 해결하게 되었습니다.

구현을 하면서 가장 중점적으로 추가했던 부분은 회원 정보에 따라 API 동작이었습니다. 기존에 있던 코드에는 비인증 사용자가 API에 접근하여 이미지를 만드는 것이 가능했습니다. 이러한 문제를 해결하고자 User Modelrequest의 문서를 참고하여서 해결을 했습니다.

# bikes/views.py
...
class BikeImageCreate(generics.CreateAPIView):
  ...
  def perform_create(self, serializer):
        if not self.request.user.is_authenticated:
            raise exceptions.PermissionDenied('로그인이 필요합니다.')
        if not bool(self.request.user.bike_set.all().filter(id=self.request.data['bike'])):
            raise exceptions.PermissionDenied('해당 매물을 수정 할 권한이 없습니다.')
        try:
            return serializer.save()
        except IntegrityError:
            raise exceptions.ValidationError("잘못된 형식입니다.")
...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages