팀 자체 타임어택
CRUD 구현해보기 - post작성을 통해서
- usermodel을 AbstractBaseUser를 통해서 구현한다.
- views.py에 로그인 기능을 구현한다.
- 수퍼유저를 통해 로그인 기능을 확인한다.
- user와(author도 가능) content를 가지는 PostModel 모델을 만든다.
- UserModel과 PostModel의 연관관계를 형성한다.
- post 메소드로 새로운 포스트를 만드는 기능을 구현한다.
- serializer를 통해서 현재 유저가 작성한 post의 content를 모두 조회하는 기능을 구현한다.
- 추가과제
- 파라미터로 post_id를 받아와 put메소드로 post를 수정한다.
- 마찬가지로 post_id로 post를 삭제해준다.
팀원들과 같이 성장하기 위해서 주말동안 만들어온 로직을 공유하고 만들어보는 시간을 가졌다. 위 과정을 통해서 CRUD를 개괄적으로 이해할 수 있고 시간보다 일찍한 사람들은 직접 methodField와 Serializer를 직접 구현해보며 두 방법의 장점과 단점 구현하는 방법을 연구할 수 있었다.
methodfield와 serializer 각각의 장단점
methodfield
- methodfields의 장점으로는 json데이터가 한 뎁스 안에서 조회가 가능하다는 것과 내가 가져오고 싶은 데이터를 내 마음대로 제어할 수 있다는 점이 있다.
- 단점은 모델과 필즈만 간단하게 선언해 가져오면 되는 serializer와 달리 methodfield는 직접 함수 안의 로직을 일일히 구현해 데이터를 정제하여 가져와야한다는 것이다.
serializer
- serializer의 장점은 내가 가져올 데이터의 모양을 직관적으로 알 수있다는 것이다. 또한 methodfield에 비해 간단하게 데이터를 가져올 수 있다.
- 단점은 데이터의 뎁스가 깊어지면 깊어질수록 serializer의 갯수는 더욱 늘어가고 직관적이고 깔끔해 보였던 데이터가 조회하기 어려운 데이터가 된다는 점이다.
drf 특강 정리
- 다양한 데이터 검색문법을 활용해 원하는 값 찾기
- 언더바 2개로 Field lookups문법을 사용
- __contains ⇒ 검색기능을 사용할 때 포함값을 찾음
- __startswith, __endswith ⇒ 시작값, 끝 값이 같은 값
- gt = greaterthan, lt = lessthan ⇒ 특정값과 비교하여 값을 찾을 수 있음
- __in 특정 리스트에 포함된 object를 찾을 수 있음
- foreign_key를 통해서 역으로 들어가 조건을 검색할 수 있음
- article에 author라는 user테이블이 있다고 한다면 유저의 username이라는 칼럼값으로 filter를 하고싶다면 아래와 같이 쓸 수 있음
- articles = Article.objects.filter(user__username = “test123”)
- kwargs를 활용한 sign_up
- data =request.data
password = data.pop(”password”)
user = UserModel(**data)
user.set_password(password)
user.save()
- 위와 같은 식으로 password를 빼고 해시된 패스워드를 설정
- **를 통해서 딕셔너리 데이터를 풀어 한꺼번에 넣을 수 있다.