'weHome' 프로젝트를 마치면서

정은경·2020년 1월 5일
1

프로젝트 소개

Watch the video

  • '오늘의 집' 서비스 클로닝

사용된 기술

내가맡은 역할

  • 장고/가상환경 세팅
  • 서비스 DB 모델링
  • 백엔드 API 구현:
    • 로그인/회원가입 API
    • 마이페이지 좋아요 게시물 요청 API
    • 메인페이지 오늘의 스토리 콘텐츠 요청 API
    • 메인페이지 오늘의 딜 콘텐츠 요청 API
    • 집들이 포스팅 콘텐츠 요청 API
    • 포스팅 좋아요 기능 API
    • 포스팅 댓글 기능 API

잘한 점/아쉬운 점+ 해결&개선 방법

  • 잘한 점:
    • 프론트앤드와의 원활한 소통
    • 백앤드API의 프로토타입을 빠르게 만들어 프론트앤드와 연결하여 빠른 피드백을 받은 점
  • 아쉬운 점+해결&개선 방법:
    • 모델링을 고민하는 데 너무 많은 시간을 쏟았다.
    • 서비스의 핵심기능을 축약하고 추출해야하는 데이터를 명확하는데 초점을 두고 가능한 많은 모델링 프로토타입을 만들어 볼 것!
    • 고민만 하는 것은 빠른 결과물을 만들어내는데 큰 도움이 되지는 않는다.

기록하고 싶은 코드/함수/로직

  • 데코레이터를 이용한 로그인한 유저의 id확인
import jwt
import json
from django.http       import JsonResponse
from wemakers.settings import SECRET_KEY 
from .models           import Users
def login_decorator(func):
    def wrapper(self, request, *args, **kwargs):
        try:
            auth_token = request.headers.get('Authorization')
            payload = jwt.decode(auth_token, SECRET_KEY, algorithm='HS256')
            user = Users.objects.get(id=payload["id"])
            request.user = user
            return func(self, request, *args, **kwargs)
        except Users.DoesNotExist:
            return JsonResponse({'message':'INVALID_USER'}, status = 400)
        except TypeError:
            return JsonResponse({'message':'INVALID_VALUE'}, status = 400)
        except KeyError:
            return JsonResponse({'message': 'INVALID'}, status = 400)        
    return wrapper
  • 장고의 ORM을 보여주는 ForeignKey
class UserProfileView(View):
    @login_decorator
    def post(self, request):
        data = json.loads(request.body)
        #request.user = 1
        try:
            UserProfile(
                    user_id       = User.objects.get(id=reqest.user),
                    profile_image = data['profile_image'],
                    cover_image   = data['cover_image'],
                    homepage      = data['homepage'],
                    gender        = data['gender'],
                    birthdate     = data['birthdate'],
                    introduction  = data['introduction']
            ).save()
            return JsonResponse({'message':'SUCCESS'}, status=200)
        except KeyError:
            return JsonResponse({'message':'INVALID_KEYS'}, status=400)
profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글