ders3.md
Django Rest Framework Notlarım
Mixins
- Sınıf tabanlı (class-based)
view ile çalışmak tekrar kullanım, esneklik, ve temiz kod avantajları sağlar.
- Django Rest Framework'un bize sunduğu alternatif
view class'lardan bazılarını kullanalım.
apitr/views modülündeki LibraryList sınıfını aşağıdaki düzenleyelim
from rest_framework import mixins, generics
class LibraryList(mixins.ListModelMixin,
mixins.CreateModelMixin,
generics.GenericAPIView):
queryset = Library.objects.all()
serializer_class = LibrarySerializer
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
generics.GenericAPIView sınıfı ana fonksiyonellik için temel oluşturur.
mixin sınıflar .list(..) ve .create(...) işlemlerini sunar. list ve create işlemlerini methodlar vasıtası ile uygun get, post methodlarına bağlıyoruz.
LibraryDetail sınıfını da aşağıdaki gibi düzenleyelim
class LibraryDetail(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView):
queryset = Library.objects.all()
serializer_class = LibrarySerializer
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args)
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)
LibraryList sınıfındaki gibi benzer şekilde ihtiyacımız olan sınıfları miras aldık ve ana fonksiyonelliği yeniden generics.GenericAPIView ile sağlıyoruz.
Yorumlar