2025/12/11 MainProject - 4

김기훈·2025년 12월 11일

TIL

목록 보기
80/194

오늘 학습 내용 ✅

  • request.user.is_anonymous → True / False 반환
속성AnonymousUserUser
is_authenticatedFalseTrue
is_anonymousTrueFalse
  • DRF에서 IsAuthenticated permission_classes가 적용돼 있으면
    • request.user.is_anonymous 체크는 대부분 필요 없음
    • 왜냐면 DRF가 먼저 막고 401을 반환하기 때문
    • 하지만 커스텀 메시지를 반환하기 위해서 직접 is_anonymous를 체크 함

git

stash 활용

  • 지금 작업 코드가 많고 커밋하기 애매한 상태라면 → stash로 임시 저장
1) 현재 코드 임시로 stash에 저장
git stash push -m "임시: question-create 작업 중"

2) develop 브랜치로 이동
git checkout develop

3) develop 최신 내용 가져오기
git pull origin develop

4) 새로운 feature 브랜치 생성
git checkout -b feature/question-create

5) 아까 stash한 작업 불러오기
git stash pop

Git commit & Git push

  • 내가 작업하는 동안 누군가의 작업 이력이 develop에 merge되었을 수 있기 때문에 아래 과정을 진행
git add 커밋할 파일

git commit

git checkout develop 

git pull origin develop
# git pull 했을 때 이미 최신이라고 하면 git rebase develop은 건너뜁니다.

git checkout feature/~

git rebase develop
# 최신화가 된 상태를 확인했다면 푸시합니다.

git push origin feature/login

검증

  • 검증은 Serializer / HTTP Status는 View에서 결정

새롭게 알게된 내용 ✅

  • 쿼리 파라미터 는 views에서 확인

  • def make_user(self, **kwargs: Any) -> User: ...

역할권장 위치
비즈니스/도메인 검증 (title 중복, category 존재 여부, 유저 권한 등)Serializer가 담당하는 것이 DRF 공식 Best Practice
요청 메서드 제어(GET/POST/PUT), 인증 여부 등View(APIView, GenericView)가 담당

어려운 내용(추가 학습 필요) ✅

오늘 발생한 문제(발생 했다면) ✅

  • 문제: 시리얼라이저 / 뷰 코드 작성 완료 후 테스트 코드 실행했으나 모두 성공처리
    • 실패할 테스트도 통과해버림
  • 원인: 유저테이블에서 필요로하는 정보를 다 채우지않고 유저를 생성해버려서 오류 발생
  • 해결: 유저 모델에서 요구하는 필드 전부 추가하여 다시 테스트

  • 문제: 코드 구성 완료 후 PR을 올렸더니 CI/TEST에서 잡힘 (3번)
  • 원인: views.py는 분기 6개를 가지고 있는데 Test코드는 3개만 커버했었음
    • 각각 전부 추가했지만 401은 DRF가 알아서 처리 하기 때문에 굳이 적을 필요 없음
    • 401은 IsAuthenticated 이거 때문에 절대 내부 진입이 불가
  • 해결: 각각의 분기마다 테스트코드 작성 및 401은 그냥 삭제
    • permission_classes가 이미 처리
  • ci는 특히 views.py에 검증코드를 많이 넣어서 그런것으로 예상
profile
안녕하세요.

0개의 댓글