Adding paginator...

This commit is contained in:
Fred Pauchet 2012-06-18 09:31:17 +02:00
parent 23d9ba9d41
commit 6f21c30a77
4 changed files with 58 additions and 22 deletions

View File

@ -8,9 +8,10 @@ from django.template import RequestContext
from django import forms
from cards.models import Item, Country, Category, SubCategory
from django.core.context_processors import csrf
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def index(request):
cards_list = Item.objects.order_by('-created_at')[:21]
cards_list = Item.objects.order_by('-created_at')[:25]
context = { 'cards_list' : cards_list}
@ -22,6 +23,18 @@ def details(request, item_id):
context = {'card': a }
return render_to_response('cards/details.html', RequestContext(request, context))
def pagination(cards_list, request):
paginator = Paginator(cards_list, 25)
page = request.GET.get('page')
try:
cards = paginator.page(page)
except PageNotAnInteger:
cards = paginator.page(1)
except EmptyPage:
cards = paginator.page(paginator.num_pages)
def query(request):
@ -40,36 +53,43 @@ def query(request):
cards_list = Item.objects.filter(q)
context = { 'cards_list' : cards_list, 'title' : 'Recherche sur les termes : ' + terms }
cards = pagination(cards_list, request)
context = { 'cards_list' : cards, 'title' : 'Recherche sur les termes : ' + terms }
return render_to_response('cards/list.html', RequestContext(request, context))
def advanced_query(request):
return render_to_response('cards/advanced_query.html', RequestContext(request, context))
def search_by_country(request, country_id, page_number):
def search_by_country(request, country_id):
country = get_object_or_404(Country, pk=country_id)
context = { 'cards_list' : country.item_set.all(), 'title' : country.label }
cards = pagination(country.item_set.all(), request)
context = { 'cards_list' : cards, 'title' : country.label }
return render_to_response('cards/list.html', RequestContext(request, context))
def search_by_category(request, category_id, page_number):
def search_by_category(request, category_id):
category = get_object_or_404(Category, pk=category_id)
cards_list = list()
for subcat in category.subcategory_set.all():
cards_list.extend(subcat.item_set.all())
cards = pagination(cards_list, request)
context = { 'cards_list' : cards_list, 'title' : category.label }
context = { 'cards_list' : cards, 'title' : category.label }
return render_to_response('cards/list.html', RequestContext(request, context))
def search_by_subcategory(request, subcategory_id, page_number):
def search_by_subcategory(request, subcategory_id):
subcategory = get_object_or_404(SubCategory, pk=subcategory_id)
context = { 'cards_list' : subcategory.item_set.all(), 'title' : subcategory.label }
cards = pagination(subcategory.item_set.all(), request)
return render_to_response('cards/list.html', RequestContext(request, context))
context = { 'cards_list' : cards, 'title' : subcategory.label }
return render_to_response('cards/list.html', RequestContext(request, context))

View File

@ -11,7 +11,7 @@
</head>
<body>
<header class="jumbotron subhead" id="overview">
<img src="{{STATIC_URL}}/img/header.png" alt="Ma collection de télécartes" />
<img src="{{STATIC_URL}}img/header.png" alt="Ma collection de télécartes" />
</header>
<div class="container-fluid">
<div class="row-fluid">

View File

@ -7,15 +7,31 @@
<h2>{{title}}</h2>
<ul class="thumbnails">
{% for card in cards_list %}
<li class="span2">
<a href="{% url card-details card.id %}" class="thumbnail">
{% if card.image %}
<img src="{{card.image|crop}}" title="{{card.label}}" />
{% endif %}
</a>
</li>
{% endfor %}
{% for card in cards %}
<li class="span2">
<a href="{% url card-details card.id %}" class="thumbnail">
{% if card.image %}
<img src="{{card.image|crop}}" title="{{card.label}}" />
{% endif %}
</a>
</li>
{% endfor %}
</ul>
<div class="pagination">
<span class="step-links">
{% if cards.has_previous %}
<a href="?page={{ contacts.previous_page_number }}">page précédente</a>
{% endif %}
<span class="current">
Page {{ cards.number }} de {{ cards.paginator.num_pages }}.
</span>
{% if cards.has_next %}
<a href="?page={{ contacts.next_page_number }}">page suivante</a>
{% endif %}
</span>
</div>
{% endblock %}

View File

@ -13,9 +13,9 @@ urlpatterns = patterns('',
url(r'^details/(?P<item_id>\d+)/$', 'cards.views.details', name='card-details'),
url(r'^query/$', 'cards.views.query'),
url(r'^advanced-query/$', 'cards.views.advanced_query', name='advanced-query'),
url(r'^list/country/(?P<country_id>\d+)/(?P<page_number>\d+)/$', 'cards.views.search_by_country', name='list-by-country'),
url(r'^list/category/(?P<category_id>\d+)/(?P<page_number>\d+)/$', 'cards.views.search_by_category', name='list-by-category'),
url(r'^list/subcategory/(?P<subcategory_id>\d+)/(?P<page_number>\d+)/$', 'cards.views.search_by_subcategory', name='list-by-subcategory'),
url(r'^list/country/(?P<country_id>\d+)/$', 'cards.views.search_by_country', name='list-by-country'),
url(r'^list/category/(?P<category_id>\d+)/$', 'cards.views.search_by_category', name='list-by-category'),
url(r'^list/subcategory/(?P<subcategory_id>\d+)/$', 'cards.views.search_by_subcategory', name='list-by-subcategory'),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),