login.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎虎
  5. @file: login.py
  6. @date:2025/4/14 10:30
  7. @desc:
  8. """
  9. from drf_spectacular.types import OpenApiTypes
  10. from drf_spectacular.utils import OpenApiParameter
  11. from common.mixins.api_mixin import APIMixin
  12. from common.result import ResultSerializer
  13. from users.serializers.login import LoginResponse, LoginRequest, CaptchaResponse
  14. class ApiLoginResponse(ResultSerializer):
  15. def get_data(self):
  16. return LoginResponse()
  17. """
  18. Request 和Response 都可以使用此方法
  19. 使用serializers.Serializer
  20. class LoginRequest(serializers.Serializer):
  21. username = serializers.CharField(required=True, max_length=64, help_text=_("Username"), label=_("Username"))
  22. password = serializers.CharField(required=True, max_length=128, label=_("Password"))
  23. 使用serializers.ModelSerializer Request不要使用serializers.ModelSerializer的方式
  24. class LoginRequest(serializers.ModelSerializer):
  25. class Meta:
  26. model = User
  27. fields = ['username', 'password']
  28. """
  29. class LoginAPI(APIMixin):
  30. @staticmethod
  31. def get_request():
  32. return LoginRequest
  33. @staticmethod
  34. def get_response():
  35. return ApiLoginResponse
  36. @staticmethod
  37. def get_parameters():
  38. return [OpenApiParameter(
  39. name="code",
  40. type=OpenApiTypes.STR,
  41. location=OpenApiParameter.PATH,
  42. required=True,
  43. )]
  44. class ApiCaptchaResponse(ResultSerializer):
  45. def get_data(self):
  46. return CaptchaResponse()
  47. class CaptchaAPI(APIMixin):
  48. @staticmethod
  49. def get_response():
  50. return ApiCaptchaResponse