Tengo un problema bastante simple. Tengo una clase que amplía APIView para pasar una respuesta Json a una URL que se usará como API. Estoy tratando de filtrar datos de un modelo para obtener solo elementos de datos que pertenecen al usuario actual. Debido a esto, estoy tratando de acceder a request.user.id para configurar mi filtro.
Desde mi views.py, aquí hay un fragmento del código que estoy usando:
class ChartData(APIView): authentication_classes = [] permission_classes = [] def get(self, request, format=None): print(self.request.user)
Cuando voy a la URL asociada con esta clase, la declaración de impresión devuelve AnonymousUser, como si el usuario no existiera.
En el mismo archivo views.py tengo otro método (no dentro de ninguna clase) configurado de la siguiente manera:
@login_required def LogDisplay(request): print(request.user.id)
Sin embargo, cuando voy a la URL asociada con este método, obtengo un número entero como salida en mi consola.
¿Cómo puedo hacer que mi primer método también tenga acceso al usuario actual?
Estás cerca.
en configuración.py:
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) }
en vistas.py:
from rest_framework.permissions import IsAuthenticated class ChartData(APIView): authentication_classes = [] permission_classes = [IsAuthenticated, ] get(self, request, format=None): ...