모든 웹 API에서 빼놓을 수 없는 인증 기능.
우리의 친절한 DRF에서는 이러한 인증 기능을 쉽게 사용할 수 있는 도구들을 만들어뒀다.
www.django-rest-framework.org/tutorial/4-authentication-and-permissions/
공식 문서의 Authentication and permissions 챕터를 차근차근 따라가 볼 예정.
아차차. 그전에 인증 기능이 도대체 뭔지 정확히 짚고 넘어가자.
우리가 구현하고 싶은 건...
- 각 Post는 작성한 User와 연결되어 있다.
- 로그인 한 User만 Post 작성이 가능하다. 그렇지 않으면 Post 읽기만 가능!
- 로그인 한 User는 자신이 작성한 Post만 수정 및 삭제가 가능하다.
그렇구만!
1. model 수정
models.py
제일 먼저 Post모델에 작성자인 owner란 필드를 추가해주자.
우선 django의 기본 User모델을 사용했으며, ForeignKey로 다대일 관계를 맺어주었다.
related_name을 통해 이후 역참조 시 Post를 찾을 수 있도록!
2. serializer 작성
User를 담당할 serializer도 작성해주자.
serializer.py
쨔잔. 이를 통해 UserSerializer에는 얘가 작성한 post도 담기게 되었다.
여기서 근데 PostSerializer를 작성할 때처럼 그냥 Meta 클래스에 model과 fields만 지정해주면 안 되는 것?
당연히 안 된다! Post는 현재 User와 역참조 관계!
따라서 Meta 클래스에서 model = User를 지정하더라도 post를 찾아오지 못한다.
때문에 post = serializers.PrimaryKeyRelatedField(many=True, queryset=Post.objects.all())를 통해
related_name으로 지정해 준 post를 찾도록 해 준 것!
3. view 작성
views.py
User에 대한 list와 detail을 보여줄 UserList와 UserDetail을 작성!
ListAPIView와 RetrieveAPIView는... 지난 글↓을 참고하자.
2021/01/22 - [django] - Django Rest Framework _ APIView 사용하기
4. url 작성
urls.py
url에도 UserList와 UserDetail을 추가해주자.
그 후 runserver를 돌리면...!
쨔잔. User에 대한 list 데이터가 잘 나옴을 확인할 수 있다.
Serializer의 field로 지정해줬던 Post에 대한 정보 역시 잘 나온다!
지금은 createsuperuser로 만든 관리자 계정 유저만 존재.
User의 id를 url에 담아서 보내주면... 이렇게 detail도 잘 나옴을 확인할 수 있다. 얏호!
'source-code > Django' 카테고리의 다른 글
PNU Quiz App _ django로 퀴즈 구현하기2 (1) | 2021.02.01 |
---|---|
Django REST Framework _ 인증 기능 구현하기2 (0) | 2021.01.29 |
Django REST Framework _ Mixin 사용하기 (0) | 2021.01.23 |
Django Rest Framework _ APIView 사용하기 (0) | 2021.01.22 |
Django Rest Framework _ @api_view 사용하기 (0) | 2021.01.21 |