Programming in almost language

Thi s is the site where you may share your knowledge and experience to eachother..

Archive for the ‘Paginator’ Category

Pagination in Django

Posted by Praveen Kumar on January 30, 2009

To use Paginator in Django

we need to import

from django.core.paginator import Paginator

Before going to real example letssee all the classes and attributes of Paginator Module

class Paginator(__builtin__.object)

Methods defined here:|

|  __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True)|

|  page(self, number)|      Returns a Page object for the given 1-based page number.|

|  validate_number(self, number)|     Validates the given 1-based page number.|
|  ———————————————————————-
Properties defined here:|

|  count

|      <get> = _get_count(self)|          Returns the total number of objects, across all pages.|

|  num_pages

|      <get> = _get_num_pages(self)|          Returns the total number of pages.|

|  page_range

|      <get> = _get_page_range(self)|          Returns a 1-based range of pages for iterating through within
|          a template for loop.

|
|  ———————————————————————-
Data and other attributes defined here:
|
|  __dict__ = <dictproxy object>|      dictionary for instance variables (if defined)
|
|  __weakref__ = <attribute ‘__weakref__’ of ‘Paginator’ objects>|      list of weak references to the object (if defined)

Real example

Lets assume you have event class in models

eventobj=events.objects.all() // list you objects of events class

paginator = Paginator(eventobj, 2)

try:
page = int(request.GET.get(‘page’,'1′))
except ValueError:
page = 1
try:
eventobj = paginator.page(page)
except(EmptyPage, InvalidPage):
eventobj = paginator.page(paginator.num_pages)
return render_to_response(“event.html”,{‘eventobj’:eventobj,’today’:today.strftime(“%B %d %Y %A”)})

event.html

<div >
{% if eventobj %}
<div class=”event”>
<div style=”color:red”>{{ today }} </div>
{% for name in eventobj.object_list %}
<div class=”eventname”><b>{{ name.title }}</b></div>
<div class=”eventaddress”>{{ name.address }}</div>
<div class=”eventdesc”>{{ name.description }}</div>
{% endfor %}
</div>
{% endif %}
</div>
<div class=”paging”>
<table align=”center”>
<tr>
<td>
{% if eventobj.has_previous %}
<a href=”?page={{ eventobj.previous_page_number}}” style=”text-decoration:none;color:#000000;” ><img src=”/static/images/article_previous.gif” border=”0″/>&nbsp;&nbsp;prev&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;</a>
{% endif %}
</td>
<td>
Page {{ eventobj.number }} of {{ eventobj.paginator.num_pages }}
</td>
<td>
{% if eventobj.has_next %}
<a href=”?page={{ eventobj.next_page_number }}” style=”text-decoration:none;color:#000000;”>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;next&nbsp;&nbsp;<img src=”/static/images/article_next.gif” border=”0″/></a>{% endif %}
</tr>
</table></div>


Posted in Paginator | Tagged: | 3 Comments »