Я думаю о рефакторинге своего кода, потому что я думаю, что слишком много повторяюсь, заканчивая строками кода.Взять этот пример ниже. Я реализовал представление на основе классов для GET
, PUT
и DELETE
для модели Unit
.Позже я создам другое представление для Department
для выполнения CRUD
и буду следовать той же схеме, есть ли способ, которым я могу создавать настраиваемые общие представления модели, которые можно динамически использовать в любом другом представлении.
class UnitDetailView(generics.RetrieveAPIView):
""" Class based view for Unit Details. """
serializer_class = UnitSerializer
queryset = Unit.objects.all()
def get_object(self, pk, org_id=None):
try:
return Unit.objects.get(pk=pk, org_id=org_id)
except Unit.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
"""Get a unit instance."""
unit_obj = self.get_object(pk, org_id=get_auth(request))
serializer = UnitSerializer(unit_obj)
return Response(serializer.data)
def put(self, request, pk, format=None):
"""Update a unit instance."""
unit_obj = self.get_object(pk, org_id=get_auth(request))
serializer = UnitSerializer(unit_obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
"""Remove a unit instance."""
unit_obj = self.get_object(pk, org_id=get_auth(request))
unit_obj.delete()
return Response(status=status.HTTP_204_NO_CONTENT)