자체 타임어택, drf 특강 정리

코변·2022년 6월 20일
0

개발일지

목록 보기
33/41
post-custom-banner

팀 자체 타임어택

CRUD 구현해보기 - post작성을 통해서

  1. usermodel을 AbstractBaseUser를 통해서 구현한다.
  2. views.py에 로그인 기능을 구현한다.
  3. 수퍼유저를 통해 로그인 기능을 확인한다.
  4. user와(author도 가능) content를 가지는 PostModel 모델을 만든다.
  5. UserModel과 PostModel의 연관관계를 형성한다.
  6. post 메소드로 새로운 포스트를 만드는 기능을 구현한다.
  7. serializer를 통해서 현재 유저가 작성한 post의 content를 모두 조회하는 기능을 구현한다.
  • 추가과제
    1. 파라미터로 post_id를 받아와 put메소드로 post를 수정한다.
    2. 마찬가지로 post_id로 post를 삭제해준다.

팀원들과 같이 성장하기 위해서 주말동안 만들어온 로직을 공유하고 만들어보는 시간을 가졌다. 위 과정을 통해서 CRUD를 개괄적으로 이해할 수 있고 시간보다 일찍한 사람들은 직접 methodField와 Serializer를 직접 구현해보며 두 방법의 장점과 단점 구현하는 방법을 연구할 수 있었다.

methodfield와 serializer 각각의 장단점

methodfield

  • methodfields의 장점으로는 json데이터가 한 뎁스 안에서 조회가 가능하다는 것과 내가 가져오고 싶은 데이터를 내 마음대로 제어할 수 있다는 점이 있다.
  • 단점은 모델과 필즈만 간단하게 선언해 가져오면 되는 serializer와 달리 methodfield는 직접 함수 안의 로직을 일일히 구현해 데이터를 정제하여 가져와야한다는 것이다.

serializer

  • serializer의 장점은 내가 가져올 데이터의 모양을 직관적으로 알 수있다는 것이다. 또한 methodfield에 비해 간단하게 데이터를 가져올 수 있다.
  • 단점은 데이터의 뎁스가 깊어지면 깊어질수록 serializer의 갯수는 더욱 늘어가고 직관적이고 깔끔해 보였던 데이터가 조회하기 어려운 데이터가 된다는 점이다.

drf 특강 정리

  1. 다양한 데이터 검색문법을 활용해 원하는 값 찾기
    1. 언더바 2개로 Field lookups문법을 사용
      • __contains ⇒ 검색기능을 사용할 때 포함값을 찾음
      • __startswith, __endswith ⇒ 시작값, 끝 값이 같은 값
      • gt = greaterthan, lt = lessthan ⇒ 특정값과 비교하여 값을 찾을 수 있음
      • __in 특정 리스트에 포함된 object를 찾을 수 있음
    2. foreign_key를 통해서 역으로 들어가 조건을 검색할 수 있음
      • article에 author라는 user테이블이 있다고 한다면 유저의 username이라는 칼럼값으로 filter를 하고싶다면 아래와 같이 쓸 수 있음
      • articles = Article.objects.filter(user__username = “test123”)
  2. kwargs를 활용한 sign_up
    • data =request.data
      password = data.pop(”password”)
      user = UserModel(**data)
      user.set_password(password)
      user.save()
    • 위와 같은 식으로 password를 빼고 해시된 패스워드를 설정
    • **를 통해서 딕셔너리 데이터를 풀어 한꺼번에 넣을 수 있다.
profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.
post-custom-banner

0개의 댓글