class ModifyPartsBillEndDepositView(generics.GenericAPIView, mixins.UpdateModelMixin):
"""
청구서 종결/입금여부
"""
serializer_class = ModifyPartsBillEndDepositSerializer
queryset = PartsBill.objects.all()
permission_classes = [permissions.AllowAny]
def patch(self, request, *args, **kwargs):
return self.partial_update(request, *args, **kwargs)
장고에서 자주 사용하는 뷰를 미리 만들어서 제공한다. 클래스로 구현되어 있어 상속받아 사용한다. 크게 5가지 종류가 있다.
SimpleGenericViews = [View, TemplateView, RedirectView]
DetailViews = [DetailView]
DetailViews = [ListView]
EditingViews = [FormView, CreateView, UpdateView, DeleteView]
DateBaseViews = [ArchiveIndexView, YearArchiveView,
MonthArchiveView, WeekArchiveView,
DayArchiveView, TodayArchiveView,
DateDetailView]
queryset
반드시 1)quryset 속성을 설정하거나 2) get_queryset() 메서드를 override 해서 사용한다.
queryset을 지정할 때 models.objects.all()
부문으로 들고온다. 장고는 기본적으로 models.Model
을 상속하는 model과 관련해서
serializer_class
validate, serialize, deserialize 연산을 수행하기 위해 사용하는 클래스, 속성을 설정하거나 get_serializer_class() 메서드를 override 해서 사용한다.
class ModifyPartsBillEndDepositView(generics.GenericAPIView, ):
"""
청구서 종결/입금여부
"""
serializer_class = ModifyPartsBillEndDepositSerializer
queryset = PartsBill.objects.all()
믹신(mixins) 모듈은 목록을 보여주거나, 생성, 삭제, 수정 등의 반복적인 로직을 처리한다. 이러한 기능을 하나의 Mixin 클래스로 제공한여 반복적인 일을 줄여주고 가독성, 생산성을 높여줄 수 있다.
일례로 APIView를 상속받은 클래스뷰의 경우 serializer 별로 처리를 해주어야 했지만 mixins의 경우 queryset
과 serializer_class
속성만 지정해주면 serializer 관련해서 유효성검사 및 저장을 하지 않아도 된다.
모델 인스턴스를 수정하여 저장해 주는 객체이다.
.update(request, *args, **kwargs) 메소드로 호출하여 사용한다.
부분만 변경하고자 할 경우, .partial_update(request, *args, **kwargs)메소드를 호출하고, 이 때 요청은 HTTP PATCH requests이다.
성공 시, 200 OK response 리턴한다.
실패 시, 404 Not Found 리턴한다.
해당 API의 기능은 부품사 페이지에서 청구서 종결 및 입금 여부
와 관련해서 True
or False
를 설정하는 API 이다. 이와 관련된 field는 모델 PartsBill
이 가지고 있어 이를 수정하기 위해 queryset
과 serializer
을 설정해주는 것이다.
GenericAPIView + mixins