here is a working example. Let me know if it works for you.
My Handler (from django.core.paginator import ObjectPaginator, InvalidPage)
----------------------------------------
class ListAll(webapp.RequestHandler):
def get(self):
#visitors=db.GqlQuery("SELECT * FROM Visit")
visitors=Visit.all()
visitors.order('-date')
visitors=visitors.fetch(limit=100)
paginate_by =10
paginator = ObjectPaginator(visitors, paginate_by)
#self.response.out.write(paginator.pages)
try:
page = int(self.request.get('page', 0))
visits = paginator.get_page(page)
except InvalidPage:
raise http.Http404
template_values = {
'visits': visits,
'is_paginated' : True,
'results_per_page' : paginate_by,
'has_next': paginator.has_next_page(page),
'has_previous': paginator.has_previous_page(page),
'page': page + 1,
'next': page + 1,
'previous': page - 1,
'pages': paginator.pages,
'action':action,
}
path = os.path.join(os.path.dirname(__file__), 'show.html')
self.response.out.write(template.render(path, template_values))
----------------------------------------
Here is my Template HTML
----------------------------------------------------
{% if has_previous %}
<a href="?q=ip&page={{ previous }}">
< < previous {{ page }}
{% endif %}
{% if has_next %}
<a href="?q=ip&page={{ next }}"> next >>
{% endif %}
</tr></td>
{% endifequal %}
------------------------------------------------------