Есть ли смысл индивидуализировать представления Django на основе классов?

В учебнике по Django, который я смотрю, кто-то пишет:

class GetUserProfileView(APIView):
     def get(self, request, format=None):
          # user profile get code

class UpdateProfileView(APIView):
     def put(self, request, format=None):
          # user profile put code

тогда как мне, новичку, кажется, что гораздо разумнее организовать это в одном представлении:

class ProfileView(APIView):
     def get(self, request, format=None):
          # user profile get code

     def put(self, request, format=None):
          # user profile put code

Есть ли причина для организации их в разные виды или создатель учебника неопытен?

Как правило, каждый разработчик имеет свой собственный стиль написания и организации кода.

В вашем случае, придерживаясь таких принципов чистого кода, как DRY и KISS, я бы предложил использовать такой стиль:

class UserProfileView(APIView):
     def get(self, request, format=None):
          # user profile get code

     def put(self, request, format=None):
          # user profile put code

что устраняет дублирование и избыточность представлений, основанных на классах, и делает ваш код чище. (и который я всегда использую ;)

Обычно такие представления действительно группируются, это понятие называется ViewSet [drf-doc], которое может группировать list (обычно GET-запрос без какого-либо "ключа" для объекта), retrieve (обычно GET-запрос с ключом, по которому мы получаем объект), create (обычно POST-запрос), update (обычно PUT-запрос), partial_update (обычно PATCH-запрос) и destroy (обычно DELETE-запрос).

Обычно APIView используется только в том случае, если это не сценарий "по умолчанию", например, получение объектов, их сериализация и возврат. То есть только если вы делаете что-то более сложное. Часто используются разные APIView, например, если сериализатор или другая логика отличаются в зависимости от сценария, в этом случае логика часто не дает однозначного определения между сценариями, что делает ее менее элегантной, чем разделение на разные классы.

Вернуться на верх