【Flask项目2】python对象分页数据序列化基类(5)

导读:本篇文章讲解 【Flask项目2】python对象分页数据序列化基类(5),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

comment—utils—serializer.py文件

class BasePaginateSerializer(object):
    """分页数据序列化基类"""

    def __init__(self, paginate):       #简化代码,可以满足对象的拷贝
        self.pg = paginate
        if not self.pg:
            return paginate
        self.has_next = self.pg.has_next  # 是否还有下一页
        self.has_prev = self.pg.has_prev  # 是否还有前一页
        self.next_num = self.pg.next_num  # 下一页的页码
        self.page = self.pg.page  # 当前页的页码
        self.pages = self.pg.pages  # 匹配的元素在当前配置一共有多少页
        self.total = self.pg.total  # 匹配的元素总数
        self.page_size = self.pg.page_size  #一页最多显示多少条数据

    def get_object(self, obj):
        """对象的内容,系列化的个性操作,子类重写"""
        return {}

    #
    def paginateInfo(self):
        """分页信息,是否有上下页,页数,总页数等"""
        return {
            'has_next': self.has_next,
            'has_prev': self.has_prev,
            'next_num': self.next_num,
            'page': self.page,
            'pages': self.pages,
            'total': self.total,
            'page_size': self.page_size
        }

    def to_dict(self):
        """序列化分页数据"""
        pg_info = self.paginateInfo()
        paginate_data = []
        for obj in self.pg.items:
            paginate_data.append(self.get_object(obj))
        return {
            'paginateInfo': pg_info,        #分页对象本身
            'totalElements': pg_info['total'],  #总记录数
            'content': paginate_data            #当前一页所需要展示的数据列表
        }


class BaseSerializer(object):
    '''
    把python对象转化为字典
    '''

    def __init__(self, data):
        self.data = data

    def to_dict(self):
        # 个性化的函数需要子类重写
        return {}


class BaseListSerializer(object):
    """对象组序列化基类"""

    def __init__(self, data):
        self.data_list = data
        # self.select_type_serializer()

    def select_type_serializer(self):
        if not self.data_list:
            return None
        if isinstance(self.data_list, list):  # 列表解析
            if len(self.data_list) == 0:
                return None
            else:
                self.data_list = [dict(zip(result.keys(), result)) for result in self.data_list]

    def to_dict(self):
        """个性化的系列化,子类重写 """
        return {}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74126.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!