def paginate(query: Query) -> Query: """分页查询""" page, per_page = map(request.args.get, ['page', 'per_page']) try: page = int(page) if page else 0 per_page = int(per_page) if per_page else 0 except ValueError: pass else: if page > 0: if per_page > 0: return query.paginate(page, per_page) else: return query.paginate(page) return query
def paginate(query: Query, page: Optional[int] = None, size: Optional[int] = None) -> Pagination: """Create pagination object using sane defaults. :param query: query to paginate results :type query: peewee.Query :param page: page number, will be fetched from request if omitted, defaults to None :type page: Optional[int], optional :param size: page size, defaults to None :type size: Optional[int], optional :return: pagination object for query :rtype: Pagination """ if page is None: page = get_page() if size is None: size = current_app.config.get('LIST_SIZE', 20) q = query.paginate(page, size) return Pagination(page, size, query.count(), q)