Ir para o conteúdo

Template Method - Django REST Framework Views

Problema

Como podemos alterar apenas um pequeno comportamento, no caso um método, de uma django REST Framework Generic View?

Solução

O framework Django Rest permite que alguns métodos específicos das Views sejam alteradas quando necessário, ou seja, fazendo-o por meio de um Template Method.

Modelagem

Modelagem Template

Link para a imagem

Código

"""
    As views existentes dentro de generics do Django Rest por si só podem ser consideradas templates
"""
class BaseFilterListView(generics.ListAPIView):
    @abstract_method
    def get_queryset(self): # método que deiew(BaseFilterListView):
    """
        View que lista todas os anúncios com uma dada plataforma
    """
    serializer_class = OfferSerializer # Serializer de Anúncio, com os campos padrão de anúncio
    def get_queryset(self):
        platform = self.kwargs['platform']
        return Offer.objects.filter(platform=platform)

Versionamento

Versão Data Modificação Motivo Autor
1.0 04/04/2021 Criação do documento - Todos os integrantes
1.1 08/04/2021 Alteração da solução e inclusão da modelagem Para que esteja documentado a modelagem do GOF Marcelo Victor