본문 바로가기

DRF Custom Permission DRF Custom Permission Django에서 특정 그룹에 속해있는 유저만 실행할 수 있는 viewset을 만들어봅시다 !! 일단 "NGEE" 라는 그룹이 생성되어 있다고 가정할 때 아래와 같은 permission 클래스를 하나 만들어줍니다. ngeePermission의 has_permission이 하는 일은 request.user.groups 이름을 가지고 와서 거기에 NGEE가 있는지 없는지를 리턴해줍니다. NGEE 라는 그룹에 속해있다면 True가 리턴될 것이고 반대로 속해있지 않다면 False가 리턴되겠죠? from rest_framework.permission import BasePermission class ngeePermission(BasePermission) def has_perm.. 더보기
DRF - list_route, detail_route >> @action 변경 DRF (Django Resf Framework)에서 list_route와 detail_route는 각각 아래와 같이 변경해야 합니다. from rest_framework.decorators import action @action(detail=False) #list_route @action(detail=True, methods=['post']) #detail_route 이제 list_route, detail_route가 action으로 합쳐졌기 때문인데요. 아래 홈페이지 내용을 참고하세요. https://www.django-rest-framework.org/community/3.8-announcement/#action-decorator-replaces-list_route-and-detail_route a.. 더보기
django rest framework serializer.is_valid() false, errors print 간단하게 기록용 !! django rest framework에서 views.py 단에서 주로 사용자의 request에 대해 serializer 연결을 합니다. 특히 create() 함수 그러니깐 post 요청, 다시 말해서 사용자가 먼가를 생성하는 요청을 한 경우에 사용자가 입력한 값이 적절한지 serializer에 is_valid() 함수를 통해 검토하고 save 해야 합니다 !! 말로 하니깐 알아보기가 불편하네요. 역시 코드가 이해하기 편한 것 같아요. 아무튼 views.py 를 잠시 살펴보시죠. @permission_classes((IsAdminUser, ))class TestDataViewSet(viewsets.ModelViewSet): queryset = TestData.objects.all().. 더보기
DRF - ModelViewSet Custom Method 저는 Django REST Framework 를 통해서 Restful API를 만들 때 View 단에서는 ModelViewSet을 주로 활용하고 있어요.그냥 왠만한 것은 그냥 사용해도 되고, Custom이 필요할 때는 필요한 Method만 Override 해서 사용하면 좋더라구요. 예를 들어서 Get으로 들어오는 요청은 list 함수를 Override하면 되고 Post 요청은 create 함수를 Override 하면 됩니다.함수를 호출하는 것은 Router에서 이뤄지기 때문에 어떤 Router를 사용하느냐에 따라 약간 달라질 수 있겠습니다. DRF Homepage에 보면 http://www.django-rest-framework.org/api-guide/routers/Router에 대해 자세히 설명되어 .. 더보기
DRF - Method 제한, 허용 Django Rest Framework에서 특정 Method만 허용하고 싶다면 다르게 말하면 특정한 Method만 사용할 수 있도록 제한하고 싶으면 Viewset에 http_method_names 속성을 적용하면 됩니다. 이것은 django에서 제공하는 속성이고 좀 더 rest framework 답게 사용하는 방법도 존재하지만 저한테는 이게 더 편한거 같아요. 아래 그림은 post만 허용한 상태에 대한 예제를 나타냅니다. 그림에서 나타난 것 처럼 Allow에 POST만 보입니다. 아래 그림들은 Get과 Post 방식을 허용한 상태를 나타냅니다. 그림에서 볼 수 있는 것 처럼 POST,GET 방식이 허용되고 하단에는 GET으로 얻어진 값들이 출력됩니다. :) 더보기
DRF - Django Rest Delete 403 Error Delete 요청을 Django Rest Framework로 보내는 것에서 헤맸다. 일단 jQuery를 활용하여 Post 요청을 하는 예시를 보면 아래와 같다. jQuery기반의 cookie 라이브러리를 사용하고 있는데 아무튼 위와 같은 소스를 통해 DRF 기반의 restful API에 요청하는 것이 가능했다. 당연히 위와 같은 방법으로 delete도 실험했는데 이상하게 delete는 잘 안되고 아래와 같은 에러가 발생했다.CSRF 에러 !! 해결하기 위해서는 post와는 조금 다르게 ajax 셋팅이 필요했다.CSRF Token 값을 beforeSend를 통해 전달해야한다. post도 위와 같은 방식으로 가능한지 테스트를 해봐야겠다.!!방금해봤다!! 가능하다!!! 그럼 아래 방식으로 통일해서 사용해야겠다.. 더보기