# coding:utf-8 from django.contrib.auth import authenticate from rest_framework.views import APIView from rest_framework.response import Response from drf_spectacular.utils import extend_schema, OpenApiResponse from .serializers import UserDetailSerializers from monitor.permissions import LoginPermission class UserLoginView(APIView): @extend_schema( description="用户登陆接口", request=UserDetailSerializers, responses={ 200: OpenApiResponse(description="无返回值") } ) def post(self, request): serobj = UserDetailSerializers(data=request.data) if not serobj.is_valid(): return Response(serobj.errors, status=400) username, password = request.data['username'], request.data['password'] user = authenticate(username=username, password=password) request.session['user_id'] = user.id request.session.save() return Response(status=200) class UserLogoutView(APIView): permission_classes = [LoginPermission] @extend_schema( description="用户退出接口", responses={ 200: OpenApiResponse(description="无返回值") } ) def get(self, request): del request.session['user_id'] request.session.save() return Response(status=200)