api.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎虎
  5. @file: api.py
  6. @date:2025/4/14 15:20
  7. @desc:
  8. """
  9. from django.utils.translation import gettext_lazy as _
  10. from rest_framework import serializers
  11. class DefaultResultSerializer(serializers.Serializer):
  12. """
  13. 响应结果
  14. """
  15. code = serializers.IntegerField(required=True, help_text=_('response code'), label=_('response code'))
  16. message = serializers.CharField(required=False, default="success", help_text=_('error prompt'),
  17. label=_('error prompt'))
  18. data = serializers.BooleanField(required=False, default=True)
  19. class ResultSerializer(serializers.Serializer):
  20. """
  21. 响应结果
  22. """
  23. code = serializers.IntegerField(required=True, help_text=_('response code'), label=_('response code'))
  24. message = serializers.CharField(required=False, default="success", help_text=_('error prompt'),
  25. label=_('error prompt'))
  26. def get_data(self):
  27. pass
  28. def __init__(self, **kwargs):
  29. self.fields['data'] = self.get_data()
  30. super().__init__(**kwargs)
  31. class PageDataResponse(serializers.Serializer):
  32. """
  33. 分页数据
  34. """
  35. total = serializers.IntegerField(required=True, label=_('total number of data'))
  36. current = serializers.IntegerField(required=True, label=_('current page'))
  37. size = serializers.IntegerField(required=True, label=_('page size'))
  38. def __init__(self, records, **kwargs):
  39. self.fields['records'] = records
  40. super().__init__(**kwargs)
  41. class ResultPageSerializer(ResultSerializer):
  42. def __init__(self, **kwargs):
  43. super().__init__(**kwargs)
  44. self.fields['data'] = PageDataResponse(self.get_data())