Skip to content

Commit f83eadb

Browse files
authored
Merge pull request #65 from AyushDharDubey/enhancement/paginate-homepage
Add pagination support to Index page
2 parents 3603a9f + d3c3aa9 commit f83eadb

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

mainapp/templates/mainapp/index.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,28 @@
1717
<h1>3D Model Repository</h1>
1818
</div>
1919
<hr>
20+
{% if models %}
2021
<div class="row flex">
2122
{% for model in models %}
2223
{% include "mainapp/modelpanel.html" %}
2324
{% endfor %}
2425
</div>
26+
{% endif %}
27+
{% if paginator %}
28+
<div class="row" style="margin-bottom:30px;text-align:center;">
29+
<div class="btn-group" role="group" aria-label="...">
30+
{% for page in paginator.page_range %}
31+
{% if page == page_id %}
32+
<a class="btn btn-primary disabled">{{ page }}</a>
33+
{% else %}
34+
<a href="{% url 'index' %}?page={{ page }}" class="btn btn-default">{{ page }}</a>
35+
{% endif %}
36+
{% endfor %}
37+
</div>
38+
</div>
39+
{% else %}
40+
<p>No models exist.</p>
41+
{% endif %}
2542
</div>
2643
{% endblock %}
2744
{% block footeradditions %}

mainapp/views.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,35 @@ def index(request):
2222
update_last_page(request)
2323

2424
MODELS_IN_INDEX_PAGE = 6
25+
try:
26+
page_id = int(request.GET.get('page', 1))
27+
except ValueError:
28+
page_id = 1
29+
2530
models = Model.objects.filter(latest=True).order_by('-pk')
2631

2732
if not admin(request):
2833
models = models.filter(is_hidden=False)
2934

35+
36+
if not models:
37+
models = None
38+
paginator = None
39+
else:
40+
paginator = Paginator(models, MODELS_IN_INDEX_PAGE)
41+
42+
try:
43+
models = paginator.page(page_id)
44+
except EmptyPage:
45+
models = []
46+
47+
paginator = paginator
48+
3049
context = {
31-
'models': models[:MODELS_IN_INDEX_PAGE],
50+
'models': models,
51+
'paginator': paginator,
52+
'page_id': page_id,
53+
3254
}
3355

3456
return render(request, 'mainapp/index.html', context)

0 commit comments

Comments
 (0)