#add this to views.py from django.core.paginator import Paginator,InvalidPage, EmptyPage def index(request, page=1): list = pnews.objects.all().order_by('-pdate') paginator = Paginator(list, 5) try: results = paginator.page(page) except(InvalidPage, EmptyPage): results = paginator.page(paginator.num_pages) return render_to_response('news/homepage.html', {"results":results}) #this to urls.py modify that for your urls url(r'^news/(?P\d+)/$', 'cms.news.views.index', name='gmsnews'), #this to your template so you can visit other pages <div class="paginator-bottom"> {%if results.has_previous%} <a href="{%url gmsnews results.previous_page_number%}">previous</a> {%endif%} <p>Page {{results.number}} of {{results.paginator.num_pages}}</p> {%if results.has_next%} <a href="{%url gmsnews results.next_page_number%}">next</a> {%endif%} </div> #note that you have to call pages like this {% for pnews in results.object_list %} #not like {% for pnews in results %}