我为我的Django应用程序创建了一个Login APIView。我不断得到错误,AttributeError:'WSGIRequest'对象没有属性'session'。我看过其他帖子,人们提到重新排序中间件放置sessionMIddleware首先不起作用。这是API的设置。登录时发生错误(请求,用户)。
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)
答案 0 :(得分:0)
好的,我在settings.py而不是MIDDLEWARE_CLASSES中将我的中间件定义为MIDDLEWARE。当我设置新项目时,Pycharm为我生成了它。我相信Django 1.10使用MIDDLEWARE而我使用的是1.9。