views.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # coding:utf-8
  2. from django.contrib.auth import authenticate
  3. from rest_framework.views import APIView
  4. from rest_framework.response import Response
  5. from drf_spectacular.utils import extend_schema, OpenApiResponse
  6. from .serializers import UserDetailSerializers
  7. from monitor.permissions import LoginPermission
  8. class UserLoginView(APIView):
  9. @extend_schema(
  10. description="用户登陆接口",
  11. request=UserDetailSerializers,
  12. responses={
  13. 200: OpenApiResponse(description="无返回值")
  14. }
  15. )
  16. def post(self, request):
  17. serobj = UserDetailSerializers(data=request.data)
  18. if not serobj.is_valid():
  19. return Response(serobj.errors, status=400)
  20. username, password = request.data['username'], request.data['password']
  21. user = authenticate(username=username, password=password)
  22. request.session['user_id'] = user.id
  23. request.session.save()
  24. return Response(status=200)
  25. class UserLogoutView(APIView):
  26. permission_classes = [LoginPermission]
  27. @extend_schema(
  28. description="用户退出接口",
  29. responses={
  30. 200: OpenApiResponse(description="无返回值")
  31. }
  32. )
  33. def get(self, request):
  34. del request.session['user_id']
  35. request.session.save()
  36. return Response(status=200)