def page(self, number, per_page):
		if not number:
			if not self._request:
				raise Exception('Requires with_request')
			number = self.get_page_from_request(self._request)
		if self._group_by and not self._count:
			qset = deepcopy(self.queryset).values(*self._group_by)
			if self._distinct:
				qset = qset.distinct()
			self._count = qset.count()
		per_page = per_page or self.PER_PAGE
		paginator = Paginator(self.instance.rows, per_page)
		if self._count:
			hits = max(1, self._count - paginator.orphans)
			paginator._num_pages = int(ceil(hits / float(per_page)))
			# The following line also avoids an extra (and wrong) COUNT(*) query.
			paginator._count = self._count
		try:
			current_page = paginator.page(number)
		except (EmptyPage, InvalidPage):
			page_number = 1
			current_page = paginator.page(page_number)
		paginator.limited_page_range = CustomPaginator.get_page_range(paginator.num_pages, number)
		return current_page