Django

Django permissoin_classes (GET, POST 나누기)

zhelddustmq 2024. 9. 5. 10:29

Django DRF에서

GET LIST하면 로그인 안해도 보여주고 싶고, 나머지 함수는 로그인 해야 작동하게 하고 싶은데....

요런식으로 쓰면 함수 밑에다가 정의를 하든 어찌하든 다 로그인 후에 가능하게끔 설정이 된다.

물론 함수를 일일이 나눠서 GET은 permission_classes를 빼놓고 해도 되지만,

필자는 class안에서의 permission_classes를 부분적으로 주는 방법을 다뤄보려 한다.

 

장고 공식문서: https://www.django-rest-framework.org/api-guide/permissions/

 

Permissions - Django REST framework

 

www.django-rest-framework.org

 

 

위에 대충 해석해보면 클래스나 함수를 쓸때, settings.py 의 default값이 아닌 그 클래스나 함수에 맞게끔 permission을 설정하고 싶을때를 말함.

 

그럴때 BasePermission이란 상속값을 받아 쓰면 된다고 설명이 되어있음.

 

코드를 잠깐 뜯어보자면, 

BasePermission 클래스는 요런식으로 되어있는데

우리 코드에서 요런식으로 바꾸면 SAFE_METHODS에 해당하는 것도 True로 반환해주는 걸 볼수 있음

 

SAFE_METHODS를 보면

요런식으로 구성 됨

대충 GET HEAD OPTIONS로 들어오는 요청이면 허락해준다 이말인것 같음.

 

원래 IsAuthenticated라 되어있으면 로그인 안된 유저는 다 밴인데, ReadOnly를 |로 받기 때문에 (GET, HEAD, OPTIONS)방식으로 들어오는 것도 허락해주는것 같음.

 

 

 

 

 

자세한건 공식문서를 찾아서 댓글을 달아주면 감사를 드립니다.

틀린것 지적 언제나 환영~

 

'Django' 카테고리의 다른 글

django admin 커스터마이징 시 유의점  (0) 2024.10.01
Django MTM field 단점  (0) 2024.09.23
Django 서버 배포하기  (4) 2024.09.03
외부 API 연동하기  (1) 2024.09.01
Redis  (1) 2024.08.30