26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| from rest_framework.pagination import PageNumberPagination
 | |
| from rest_framework.exceptions import ParseError
 | |
| 
 | |
| class MyPagination(PageNumberPagination):
 | |
|     page_size = 10
 | |
|     page_size_query_param = 'page_size'
 | |
| 
 | |
|     def paginate_queryset(self, queryset, request, view):
 | |
|         if request.query_params.get('pageoff', None) or request.query_params.get('page', None)=='0':
 | |
|             if queryset.count()<500:
 | |
|                 return None
 | |
|             elif queryset.count()>=500:
 | |
|                 raise ParseError('单次请求数据量大,请分页获取')
 | |
|         return super().paginate_queryset(queryset, request, view=view)
 | |
| 
 | |
| class PageOrNot:
 | |
|     def paginate_queryset(self, queryset):
 | |
|         if (self.paginator is None):
 | |
|             return None
 | |
|         elif self.request.query_params.get('pageoff', None) or self.request.query_params.get('page', None) == 0:
 | |
|             if queryset.count()<500:
 | |
|                 return None
 | |
|             elif queryset.count()>=500:
 | |
|                 raise ParseError('单次请求数据量大,请求中止')
 | |
|         return self.paginator.paginate_queryset(queryset, self.request, view=self)
 |