프로젝트 소개
사용된 기술
내가맡은 역할
- 장고/가상환경 세팅
- 서비스 DB 모델링
- 백엔드 API 구현:
- 로그인/회원가입 API
- 마이페이지 좋아요 게시물 요청 API
- 메인페이지 오늘의 스토리 콘텐츠 요청 API
- 메인페이지 오늘의 딜 콘텐츠 요청 API
- 집들이 포스팅 콘텐츠 요청 API
- 포스팅 좋아요 기능 API
- 포스팅 댓글 기능 API
잘한 점/아쉬운 점+ 해결&개선 방법
- 잘한 점:
- 프론트앤드와의 원활한 소통
- 백앤드API의 프로토타입을 빠르게 만들어 프론트앤드와 연결하여 빠른 피드백을 받은 점
- 아쉬운 점+해결&개선 방법:
- 모델링을 고민하는 데 너무 많은 시간을 쏟았다.
- 서비스의 핵심기능을 축약하고 추출해야하는 데이터를 명확하는데 초점을 두고 가능한 많은 모델링 프로토타입을 만들어 볼 것!
- 고민만 하는 것은 빠른 결과물을 만들어내는데 큰 도움이 되지는 않는다.
기록하고 싶은 코드/함수/로직
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
class UserProfileView(View):
@login_decorator
def post(self, request):
data = json.loads(request.body)
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)