# -*- coding: utf-8 -*- from django.shortcuts import render_to_response from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage @login_required def objects_list(request, Model, template, item_per_page=10): """ Return template with all objects of model Model Model - objects Model item_per_page - how many objects view in the one page """ list = Model.objects.all() paginator = Paginator(list, item_per_page) page = request.GET.get('page') try: objects = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. objects = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. objects = paginator.page(paginator._num_pages) return render_to_response(template, {'objects': objects}) @login_required def filtered_list(request, objects, template, item_per_page=10): """ Return template with objects in it with pagination item_per_page - how many objects view in the one page """ paginator = Paginator(objects, item_per_page) page = request.GET.get('page') try: objects = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. objects = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. objects = paginator.page(paginator._num_pages) return render_to_response(template, {'objects': objects})