Implementação de ModelViewSet no Django REST Framework

Introdução ao ModelViewSet

O Django REST Framework oferece uma forma simplificada de criar APIs RESTful através da classe ModelViewSet, que unifica operações de listagem, criação, recuperação, atualziação e exclusão de dados em uma única classe de visuailzação.

Configuração da ViewSet

Implementação da Classe de Visualização

from rest_framework import viewsets
from .models import Aluno
from .serializers import AlunoSerializer

class AlunoViewSet(viewsets.ModelViewSet):
    consulta = Aluno.objects.all()
    serializer_class = AlunoSerializer

A classe ModelViewSet herda de múltiplas mixins que fornecem todas as operações CRUD padrão:

  • CreateModelMixin - criação de instâncias
  • RetrieveModelMixin - recuperação de instâncias
  • UpdateModelMixin - atualização de instâncias
  • DestroyModelMixin - exclusão de instâncias
  • ListModelMixin - listagem de instâncias

Configuração de Rotas Personalizadas

Definição Manual de URLs

from django.urls import path, re_path
from .views import AlunoViewSet

urlpatterns = [
    path('', AlunoViewSet.as_view({
        'get': 'list', 
        'post': 'create'
    })),
    re_path(r'(?P<pk>[0-9]+)/', AlunoViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'patch': 'partial_update',
        'delete': 'destroy'
    })),
]

Esta configuração mapeia explicitamente métodos HTTP para ações específicas do ViewSet, diferenciando rotas com e sem parâmetro de chave primária.

Roteamento Automático com DefaultRouter

Configuração Simplificada de URLs

from rest_framework.routers import DefaultRouter
from django.urls import path, include
from .views import AlunoViewSet

roteador = DefaultRouter()
roteador.register('', AlunoViewSet)

urlpatterns = [
    path('', include(roteador.urls)),
]

O DefaultRouter automaticamente gera todas as rotas necessárias para as operações CRUD, eliminando a necessidade de configuração manual de mapeamentos.

Fluxo de Desenvolvimento com DRF

Para criar uma API RESTful completa com Django REST Framework:

  1. Definir modelo de dados: class Aluno(models.Model):
  2. Criar serializador: class AlunoSerializer(serializers.ModelSerializer):
  3. Implementar ViewSet: class AlunoViewSet(viewsets.ModelViewSet):
  4. Configurar roteamento: DefaultRouter().register('', AlunoViewSet)

Tags: Django REST API ModelViewSet ViewSet

Publicado em 8-23 19:49