Páginas

quarta-feira, julho 04, 2018

Django Rest Framework ViewSets - Mais Fácil

Há cerca de um ano venho trabalhando diretamente com APIs em Django. As ViewSets do rest sempre me pareceram confusas, não entendia bem o modelo, mas me parece que as coisas ficaram mais fáceis agora, vou tentar explicar como usar uma ModeViewSet:

Passo 1 - O model:
Um model padrão do Django com um campo nome

from django.db import models
from messaging.managers import MessageManager


class MessageGroups(models.Model):
    name = models.CharField(max_length=30, unique=True)

    def __str__(self):
        return self.name

Passo 2: A View (ViewSet):
Um ViewSet com queryset padrão trazendo todos os grupos cadastrados

from rest_framework import viewsets

from messaging.models import MessageGroups
from messaging.serializers import MessageGroupSerializer


class MessageGroupViewSet(viewsets.ModelViewSet):
    serializer_class = MessageGroupSerializer
    queryset = MessageGroups.objects.all()

Passo 3: O Urls.py:
No URLs.py do app ou do projeto deve ser adicionada a chamada para DefaultRouter e registrar a url do ViewSet (e foi aqui que me embananei). Depois disso, o urlpatterns deve ser acrescido do router.urls. É muito simples, mas eu relamente me compliquei nessa parte

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

from messaging.views import MessageGroupViewSet

router = DefaultRouter()
router.register(r'api/message/groups', MessageGroupViewSet, base_name='message_group')

urlpatterns = [
    path('any_url', AnyViewClass.as_view()),] + router.urls


AND IT IS DONE!
Ele vai criar os métodos de listagem, criação, edição e exclusão para o model utilizando o serializer definido no ViewSet, muito simples. Os métodos podem ser sobrescritos, assim como as views comuns. Enfim, facilitou muito o meu trabalho que era basicamente um CRUD filtrando as mensagens e grupos relacionados ao usuário.


Nenhum comentário: