0

I've created a Login APIView for my Django app. I'm continually getting the error, AttributeError: 'WSGIRequest' object has no attribute 'session'. I've looked at other posts and people mention reordering the middleware placing sessionMIddleware first which doesn't work. Here is the setup of the API. The error is occurring at login(request, user).

from django.contrib.auth import authenticate, login
from rest_framework.views import APIView
from rest_framework.response import Response
from .serializers import LoginSerializer
from rest_framework.permissions import AllowAny


class Login(APIView):
    permission_classes = (AllowAny, )
    authentication_classes = ()
    serializer = LoginSerializer

    def post(self, request, format=None):
    login_form = self.serializer(data=request.data)
    data = dict()
    if login_form.is_valid():
        username = login_form.data['username']
        password = login_form.data['password']
        user = authenticate(username=username, password=password)

        if user is not None:
            print(request.data)
            login(request, user)
            data['data'] = 'OK'
            return Response(data=data, status=200)
        else:
            data['error'] = 'Invalid login information provided'
            return Response(data=data, status=401)
    else:
        data['invalid'] = 'Bad Request, form is invalid'
        return Response(data=data, status=400)
ssk
  • 197
  • 2
  • 15

1 Answers1

0

Ok, I had my middleware defined as MIDDLEWARE in my settings.py instead of MIDDLEWARE_CLASSES. Pycharm generated it for me like that when I setup the new project. I believe Django 1.10 uses MIDDLEWARE and I'm using 1.9.

ssk
  • 197
  • 2
  • 15