Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro Cabeçalho Location - Import Response

Olá

Após criar a função para retornar o Location para a API e tentar rodar o servidor. O sistema retorna o seguinte erro:

File "C:\Users\Tiago\Documents\Cursos Alura\Django\Api com Django - 3\drf-clientes\escola\views.py", line 4, in from rest_framework import Response ImportError: cannot import name 'Response' from 'rest_framework' (C:\Users\Tiago\Documents\Cursos Alura\Django\Api com Django - 3\drf-clientes\venv\Lib\site-packages\rest_framework\init.py)

Pelo que entendi, ele está dizendo que não foi possível impotar o Response. Já olhei na documentação, mas não consigo identificar o que pode ser. segue parte do código abaixo

from rest_framework import viewsets, generics, status
from escola.models import Aluno, Curso, Matricula
from escola.serializer import AlunoSerializer, AlunoSerializerV2, CursoSerializer, MatriculaSerializer, ListaMatriculasAlunoSerializer,ListaAlunosMatriculadosSerializer
from rest_framework import Response
class CursosViewSet(viewsets.ModelViewSet):
    queryset = Curso.objects.all()
    serializer_class = CursoSerializer

    def create(self, request):
        serializer = self.serializer_class(data=request.data)
        if serializer.is_valid():
            serializer.save()
            response = Response(serializer.data, status=status.HTTP_201_CREATED)
            id = str(serializer.data['id'])
            response['Location'] = request.build_absolute_uri() + id
            return response
1 resposta
solução!

Olá, Tiago!

Pelo que você me mostrou, parece que você está tentando importar a classe Response do módulo rest_framework diretamente, o que está causando o erro. A classe Response é, na verdade, parte do módulo response dentro do rest_framework. Portanto, a maneira correta de importar seria:

from rest_framework.response import Response

Então, seu código ficaria assim:

from rest_framework import viewsets, generics, status
from escola.models import Aluno, Curso, Matricula
from escola.serializer import AlunoSerializer, AlunoSerializerV2, CursoSerializer, MatriculaSerializer, ListaMatriculasAlunoSerializer,ListaAlunosMatriculadosSerializer
from rest_framework.response import Response
class CursosViewSet(viewsets.ModelViewSet):
    queryset = Curso.objects.all()
    serializer_class = CursoSerializer

    def create(self, request):
        serializer = self.serializer_class(data=request.data)
        if serializer.is_valid():
            serializer.save()
            response = Response(serializer.data, status=status.HTTP_201_CREATED)
            id = str(serializer.data['id'])
            response['Location'] = request.build_absolute_uri() + id
            return response

Espero que isso resolva o problema que você está enfrentando. Lembre-se que, embora eu acredite que isso vá resolver, pode haver outros fatores em jogo que eu não estou vendo a partir do código fornecido. Espero ter ajudado e bons estudos!