2
respostas

Parâmetros da URL

Olá, entendi nos cursos de Django anteriores que a gente capturava um id passado no link, e depois criavamos uma variavel "receita_id" que era passada na URL e no proprio view como parametro. Exemplo:

def view(request,receita_id):

receita=get_object_or_404(Receita, pk=receita_id)

Mas no caso da api, não passamos como parametro da função gerada. Por quê? Como funciona de fato a captura de parametros da url no Rest? Desde já obrigado.

2 respostas

Fala Raul, como vai?

Esse comportamento mágico ocorre por conta do ViewSet.

Olha o que a documentação diz:

Em vez de escrever seus próprios conjuntos de visualizações, você frequentemente desejará usar as classes base existentes que fornecem um conjunto padrão de comportamento.

Além disso, pontua 2 vantagens de utilizar:

  • A lógica repetida pode ser combinada em uma única classe. Só precisamos especificar queryset uma vez, e ele será usado em várias visualizações.

  • Ao usar roteadores, não precisamos mais lidar com a instalação ou especificações da URL.

Em outras palavras, esse id que não passamos como argumento da função, está incluso em nosso queryset da classe ViewSet. Você pode fazer isso na mão? Pode, segue o exemplo sem o uso de Viewset e buscando a pk (chave):

class Receita(APIView): 
    def get_object(self, pk): 
        try:
            return Receita.objects.get(pk=pk) 
        except Receita.DoesNotExist:
            raise Http404

    def get (self, request, pk):
        receita = self.get_object(pk)
        serializer = ReceitaSerializer(receita) 
        return Response (serializer.data)

Fez sentido? Deu para ter uma ideia?

: )

Hahah Infelizmente não entendi muito, dado minha falta de conhecimentos mais avançados e experiência. Mas aproveitando que você respondeu por aqui. Me tira uma outra dúvida? Estou com uma grande dificuldade em realizar um deploy de forma segura, estou seguindo um passo a passo que achei pela internet... Mas nem da forma simples que vi em aula e nem com esse tutorial na internet eu consigo fazer o deploy... Ele é sempre rejeitado. E quando vem a parte da segurança eu acabo não conseguindo rodar nem localmente o código Conseguiria me ajudar? Desde ja, obrigado professor

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software