Após criar uma nova matrícula e fazer o POST, aparece a matrícula que acabei de cadastrar:
Mas ao voltar para tela de matrículas, aparecem todas matrículas e não apenas aquela que deveria ser salva em cache:
Segue meu views.py:
from rest_framework import viewsets, generics, status
from escola.models import Aluno, Curso, Matricula
from escola.serializer import (AlunoSerializer, CursoSerializer, MatriculaSerializer,
ListaMatriculasAlunoSerializer, ListaAlunosMatriculadosSerializer,
AlunoSerializerV2)
from rest_framework.response import Response
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
class AlunosViewSet(viewsets.ModelViewSet):
"""Exibindo todos os alunos e alunas"""
queryset = Aluno.objects.all()
def get_serializer_class(self):
if self.request.version == 'v2':
return AlunoSerializerV2
else:
return AlunoSerializer
class CursosViewSet(viewsets.ModelViewSet):
"""Exibindo todos os cursos"""
queryset = Curso.objects.all()
serializer_class = CursoSerializer
def create(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save()
response = Response(serializer.data, status=status.HTTP_201_CREATED)
obj_id = str(serializer.data['id'])
response['Location'] = request.build_absolute_uri() + obj_id
return response
class MatriculaViewSet(viewsets.ModelViewSet):
"""Listando todas as matrículas"""
queryset = Matricula.objects.all()
serializer_class = MatriculaSerializer
http_method_names = ['get', 'post', 'put', 'path']
@method_decorator(cache_page(120))
def dispatch(self, *args, **kwargs):
return super(MatriculaViewSet, self).dispatch(*args, **kwargs)
class ListaMatriculasAluno(generics.ListAPIView):
"""Listando as matrículas de um aluno ou aluna"""
def get_queryset(self):
queryset = Matricula.objects.filter(aluno_id=self.kwargs['pk'])
return queryset
serializer_class = ListaMatriculasAlunoSerializer
class ListaAlunosMatriculados(generics.ListAPIView):
"""Listando alunos e alunas matriculados em um curso"""
def get_queryset(self):
queryset = Matricula.objects.filter(curso_id=self.kwargs['pk'])
return queryset
serializer_class = ListaAlunosMatriculadosSerializer
E o trecho de código referente em settings.py:
# Código omitido
REST_FRAMEWORK = {
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.QueryParameterVersioning',
'DEFAULT_PERMISSIONS_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
'rest_framework.permissions.DjangoModelPermissions'
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.AnonRateThrottle',
],
'DEFAULT_THROTTLE_RATES': {
'anon': '50/day',
}
}
CORS_ALLOWED_ORIGINS = [
"http://localhost:3000",
]
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'