시작하며
프로젝트도 처음이고, 거기다가 팀 프로젝트는 더 처음이고, 그 프로젝트를 장고로 하는 것도 처음인 김민정의 팀프로젝트 회고 및 다짐
기간
2022.05.23 ~ 2022.06.03
인원
FrontEnd 4명, BackEnd 2명
BackEnd 기술 스택
django - bcrypt, pyjwt, django, mysql, git, aws, python
협업도구 - trello
시연영상
링크타고 가세요
db 모델링
내가 구현한 부분
새롭게 알게된 / 기록해 두고 싶은 개념
장고 프로젝트 회고 1 get_or_created편
장고-프로젝트-회고-2-스케쥴링편
장고-프로젝트-회고-3-트랜잭션
링크 타고 들어가시면 확인할 수 있습니다.
느낀점
예외처리를 할 수 있는 방법
1-1) 이번 프로젝트에서 많이 사용한 방법
try:
cart = Cart.objects.get(id = cart_id)
cart.delete()
return JsonResponse({'message' : "DELETE_SUCCESS"}, status=201)
except Cart.DoesNotExist:
return JsonResponse({"message" : "CART_NOT_EXISTED"}, status=400)
try except 구분 안에서 보통 DoesNotExist를 사용해서 예외처리르 수행했다.
1-2) 다음 프로젝트에서 수행하고 싶은 예외처리 방법
get_object_or_404()를 사용해서 예외처리를 하는 방법
-try, except 구문을 사용할 필요가 없다.
cart = get_object_or_404(Cart, id=cart_id)
if Review.objects.filter(id = review_id).exists():
review.view_count = review.view_count+1
review.save()
if Review.objects.filter(id = review_id).exists():
review.view_count = F('view_count') + 1
review.save()
실제로 데이터베이스에서 Python 메모리로 가져오지 않고, 모델 필드 값을 참조하고 이를 데이터베이스에서 사용하여 작업할 수 있다는 이점이 있는 F객체를 적절하게 활용해보자
확연한? 속도차이를 느낄 수 있다.
postman에서는 간편하게 api 명세서를 작성할 수 있게 도와준다
백엔드의 경우(이것도 필자의 생각일 수는 있지만) 프로젝트를 해보니 키값을 변경하는게 그렇게 어려운 일은 아니었다. 하지만 프론트 엔드 코드를 보니 키값이 필요한 곳이 백엔드보다 많았고(백엔드는 엔드포인트 단위로 움직여서 다른 엔드포인트와 키값관련해서 영향을 받지 않지만 프론트엔드는 그게 아니었던...)
협업이라는 입장에서 백엔드가 api 명세서를 만들지 않은건 프론트에게 큰 문제가 될 수 있음을 프로젝트를 하면서 깨달았다.
나름 변수명을 명확히 작성한다고 고민했지만 여전히 변수명에 대한 이해도의 부족이 들어났던 프로젝트를 회고한다.
class CommentView(View):
@login_decorator
def post(self, request, review_id):
review = Review.objects.get(id=review_id)
Comment.objects.create(
user = user,
review = review.id,
분명히 파라미터로 review_id를 받아왔으면서 review.id를 다시 구하고 있었던 나 ( 이때 왜 그랬니..) review_id = review_id만 하면 됬었는데 review라는 변수명으로 review.id를 받는 (비슷한 짓을 몇번 더 하기도 했음)
->다행히 코드리뷰를 받으면서 문제를 해결했지만 내가 이 문제를 못 찾은건 내 코드에 너무 너그러웠기 때문이 아닐까...
마치며
첫술에 배부를 수는 없지. 하지만 다음 번에는 첫술보다는 더 나아지게 노력할 예정.
🙋♂️