200803 TIL - 기업협업 3주차!

rang-dev·2020년 8월 3일
0

Wecode-TIL

목록 보기
68/79

200803 (월)

  • Login 뷰 API view에서 generics로 변경하기
    • 원래 로그인은 function view를 썼었는데(DRF로 맨처음 만든 view라서 udemy 수업에서 한대로 따라했었다.) 다른 view들은 APIView 또는 generic View을 사용하니 로그인도 generic으로 바꾸고 싶었다.
    • username과 password만 다루는 LoginSerializer를 만들고 request로 들어온 값을 vadidate하고 만약 is_valid()에서 user가 리턴된다면 해당 username과 password는 유효하므로 토큰을 반환하지만ValidationError에 걸리면 유효하지 않은 정보이다.
    • generic view를 사용하니 더 깔끔해졌다. 처음에 Response에서 토큰을 그냥 써줬었는데 Json으로 serialize 할 수 없다고해서 str()을 적용해주었다. print 해봤을때는 그냥 string처럼 잘 나왔었는데 type을 찍어보니 <class 'rest_framework.authtoken.models.Token'>라고 나온다.
  • 서로 코드 리뷰해주기
    • 이제 각자 맡았던 view들이 1차적으로 완성이 되어서 서로 짠 뷰를 보고 코드리뷰를 했다. 서로 상대방의 코드를 보면서 이해가 안되는 부분이 있으면 질문하거나 좀 더 나은 방법이 있는지 고민했다.
    • Dash Board 뷰에서는 DeliveryInfo에서 리스트로 할당된 customer_ids의 length가 배송할 주문의 갯수이고 여기서 오늘 총 배달할 개수와 완료한 물건의 개수를 계산해서 전체와 기사님별로 보여줘야한다. 유진님이 작성하신 부분인데 for문도 많이 쓰일뿐더러 코드도 길어져서 고민이라고 하셔서 어떻게 해결하면 좋을지 같이 생각을 해보았다.
    • Annotation이나 Aggregation을 쓰면 뭔가 깔끔하게 해결할 수 있을 것 같은데 문제는 len(customer_ids)를 Annotation이나 Aggregation에 적용할 수 없다는 점이었다. 그럼 len(customer_ids)를 모델의 필드에 넣어야하는데 quantity = len(customer_ids)를 바로 모델에 넣으니 오류가 발생했다. 이 quantity만 해결되면 Annotaion이나 Aggregation을 사용해볼 수 있을텐데 아직은 어떻게 풀어나갈지 잘 모르겠다. 쉬운 방법이 있는데 내가 못찾고 헤메고 있는걸까?
  • SQL 첫걸음
    • 4장 추가, 삭제, 갱신
profile
지금 있는 곳에서, 내가 가진 것으로, 할 수 있는 일을 하기 🐢

0개의 댓글