I am participating in a course and in it an activity was just to copy and paste the code provided and to use postman, but when I did this I got this error that is in the title, follow the code
Minha views.py
<code>from django.views.decorators.csrf import csrf_exempt
from rest_framework.response import Response
from rest_framework import status
from .models import Livro
from .serializers import LivroSerializer
@csrf_exempt
def livro_list_create(request):
if request.method == 'GET':
livros = Livro.objects.all()
serializer = LivroSerializer(livros, many=True)
return Response(serializer.data)
if request.method == 'POST':
serializer = LivroSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@csrf_exempt
def livro_detail(request, pk):
livro = Livro.objects.get(pk=pk)
if request.method == 'GET':
serializer = LivroSerializer(livro)
return Response(serializer.data)
if request.method == 'PUT':
serializer = LivroSerializer(livro, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
if request.method == 'DELETE':
livro.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
</code>
<code>from django.views.decorators.csrf import csrf_exempt
from rest_framework.response import Response
from rest_framework import status
from .models import Livro
from .serializers import LivroSerializer
@csrf_exempt
def livro_list_create(request):
if request.method == 'GET':
livros = Livro.objects.all()
serializer = LivroSerializer(livros, many=True)
return Response(serializer.data)
if request.method == 'POST':
serializer = LivroSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@csrf_exempt
def livro_detail(request, pk):
livro = Livro.objects.get(pk=pk)
if request.method == 'GET':
serializer = LivroSerializer(livro)
return Response(serializer.data)
if request.method == 'PUT':
serializer = LivroSerializer(livro, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
if request.method == 'DELETE':
livro.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
</code>
from django.views.decorators.csrf import csrf_exempt
from rest_framework.response import Response
from rest_framework import status
from .models import Livro
from .serializers import LivroSerializer
@csrf_exempt
def livro_list_create(request):
if request.method == 'GET':
livros = Livro.objects.all()
serializer = LivroSerializer(livros, many=True)
return Response(serializer.data)
if request.method == 'POST':
serializer = LivroSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@csrf_exempt
def livro_detail(request, pk):
livro = Livro.objects.get(pk=pk)
if request.method == 'GET':
serializer = LivroSerializer(livro)
return Response(serializer.data)
if request.method == 'PUT':
serializer = LivroSerializer(livro, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
if request.method == 'DELETE':
livro.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
urls.py
<code>from django.urls import path
from .views import livro_list_create, livro_detail
urlpatterns = [
path('livros/', livro_list_create, name='livros-list-create'),
path('livros/<int:pk>/', livro_detail, name='livro-detail'),
]
</code>
<code>from django.urls import path
from .views import livro_list_create, livro_detail
urlpatterns = [
path('livros/', livro_list_create, name='livros-list-create'),
path('livros/<int:pk>/', livro_detail, name='livro-detail'),
]
</code>
from django.urls import path
from .views import livro_list_create, livro_detail
urlpatterns = [
path('livros/', livro_list_create, name='livros-list-create'),
path('livros/<int:pk>/', livro_detail, name='livro-detail'),
]
serializer.py
<code>
from rest_framework import serializers
from .models import Categoria, Autor, Livro
class CategoriaSerializer(serializers.ModelSerializer):
class Meta:
model = Categoria
fields = ['id', 'nome']
class AutorSerializer(serializers.ModelSerializer):
class Meta:
model = Autor
fields = ['id', 'nome']
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['id', 'titulo', 'autor', 'categoria', 'publicado_em']
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
class LivroSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
titulo = serializers.CharField(max_length=200)
autor = serializers.PrimaryKeyRelatedField(queryset=Autor.objects.all())
categoria = serializers.PrimaryKeyRelatedField(queryset=Categoria.objects.all())
publicado_em = serializers.DateField()
def create(self, validated_data):
return Livro.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
class CategoriaSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
nome = serializers.CharField(max_length=100)
def create(self, validated_data):
return Categoria.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.nome = validated_data.get('nome', instance.nome)
instance.save()
return instance
class AutorSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
nome = serializers.CharField(max_length=100)
def create(self, validated_data):
return Autor.objects.create(**validated_data)
class CategoriaSerializer(serializers.ModelSerializer):
class Meta:
model = Categoria
fields = ['id', 'nome']
class AutorSerializer(serializers.ModelSerializer):
class Meta:
model = Autor
fields = ['id', 'nome']
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['id', 'titulo', 'autor', 'categoria', 'publicado_em']
def update(self, instance, validated_data):
instance.nome = validated_data.get('nome', instance.nome)
instance.save()
return instance
class LivroSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
titulo = serializers.CharField(max_length=200)
autor = serializers.PrimaryKeyRelatedField(queryset=Autor.objects.all())
categoria = serializers.PrimaryKeyRelatedField(queryset=Categoria.objects.all())
publicado_em = serializers.DateField()
def create(self, validated_data):
return Livro.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
</code>
<code>
from rest_framework import serializers
from .models import Categoria, Autor, Livro
class CategoriaSerializer(serializers.ModelSerializer):
class Meta:
model = Categoria
fields = ['id', 'nome']
class AutorSerializer(serializers.ModelSerializer):
class Meta:
model = Autor
fields = ['id', 'nome']
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['id', 'titulo', 'autor', 'categoria', 'publicado_em']
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
class LivroSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
titulo = serializers.CharField(max_length=200)
autor = serializers.PrimaryKeyRelatedField(queryset=Autor.objects.all())
categoria = serializers.PrimaryKeyRelatedField(queryset=Categoria.objects.all())
publicado_em = serializers.DateField()
def create(self, validated_data):
return Livro.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
class CategoriaSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
nome = serializers.CharField(max_length=100)
def create(self, validated_data):
return Categoria.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.nome = validated_data.get('nome', instance.nome)
instance.save()
return instance
class AutorSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
nome = serializers.CharField(max_length=100)
def create(self, validated_data):
return Autor.objects.create(**validated_data)
class CategoriaSerializer(serializers.ModelSerializer):
class Meta:
model = Categoria
fields = ['id', 'nome']
class AutorSerializer(serializers.ModelSerializer):
class Meta:
model = Autor
fields = ['id', 'nome']
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['id', 'titulo', 'autor', 'categoria', 'publicado_em']
def update(self, instance, validated_data):
instance.nome = validated_data.get('nome', instance.nome)
instance.save()
return instance
class LivroSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
titulo = serializers.CharField(max_length=200)
autor = serializers.PrimaryKeyRelatedField(queryset=Autor.objects.all())
categoria = serializers.PrimaryKeyRelatedField(queryset=Categoria.objects.all())
publicado_em = serializers.DateField()
def create(self, validated_data):
return Livro.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
</code>
from rest_framework import serializers
from .models import Categoria, Autor, Livro
class CategoriaSerializer(serializers.ModelSerializer):
class Meta:
model = Categoria
fields = ['id', 'nome']
class AutorSerializer(serializers.ModelSerializer):
class Meta:
model = Autor
fields = ['id', 'nome']
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['id', 'titulo', 'autor', 'categoria', 'publicado_em']
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
class LivroSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
titulo = serializers.CharField(max_length=200)
autor = serializers.PrimaryKeyRelatedField(queryset=Autor.objects.all())
categoria = serializers.PrimaryKeyRelatedField(queryset=Categoria.objects.all())
publicado_em = serializers.DateField()
def create(self, validated_data):
return Livro.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
class CategoriaSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
nome = serializers.CharField(max_length=100)
def create(self, validated_data):
return Categoria.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.nome = validated_data.get('nome', instance.nome)
instance.save()
return instance
class AutorSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
nome = serializers.CharField(max_length=100)
def create(self, validated_data):
return Autor.objects.create(**validated_data)
class CategoriaSerializer(serializers.ModelSerializer):
class Meta:
model = Categoria
fields = ['id', 'nome']
class AutorSerializer(serializers.ModelSerializer):
class Meta:
model = Autor
fields = ['id', 'nome']
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['id', 'titulo', 'autor', 'categoria', 'publicado_em']
def update(self, instance, validated_data):
instance.nome = validated_data.get('nome', instance.nome)
instance.save()
return instance
class LivroSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
titulo = serializers.CharField(max_length=200)
autor = serializers.PrimaryKeyRelatedField(queryset=Autor.objects.all())
categoria = serializers.PrimaryKeyRelatedField(queryset=Categoria.objects.all())
publicado_em = serializers.DateField()
def create(self, validated_data):
return Livro.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.titulo = validated_data.get('titulo', instance.titulo)
instance.autor = validated_data.get('autor', instance.autor)
instance.categoria = validated_data.get('categoria', instance.categoria)
instance.publicado_em = validated_data.get('publicado_em', instance.publicado_em)
instance.save()
return instance
I was only able to solve this problem by using @api_view() before the functions and placing the methods they receive, but this code appears in the activity, so I wanted to understand what is wrong with it for this error to occur.
New contributor
Gustavo silva is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.