Adding paginator...
This commit is contained in:
parent
23d9ba9d41
commit
6f21c30a77
|
@ -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))
|
|
@ -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">
|
||||
|
|
|
@ -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 %}
|
||||
|
|
6
urls.py
6
urls.py
|
@ -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')),
|
||||
|
|
Loading…
Reference in New Issue