Created
March 24, 2017 12:34
-
-
Save dlyapun/5c962f2b4aa7471fd3796a7ac1fa5bd4 to your computer and use it in GitHub Desktop.
Good Django Pagination
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
< Django view > | |
paginator = Paginator(data['photos'], PAGINATE_BY) | |
page = request.GET.get('page', 1) | |
try: | |
data['photos'] = paginator.page(page) | |
except PageNotAnInteger: | |
data['photos'] = paginator.page(1) | |
except EmptyPage: | |
data['photos'] = paginator.page(paginator.num_pages) | |
data['photos'].paginator.show_pages = int(page) + 4 | |
< HTML Template > | |
{% if photos.has_previous %} | |
<a href="?page={{ photos.previous_page_number }}"><button class="btn btn-success mt-2 mb-2">Previous</button></a> | |
{% endif %} | |
{% for index in photos.paginator.page_range %} | |
{% if photos.number == index %} | |
<button class="btn btn-success mt-2 mb-2" disabled="disabled">{{ photos.number }}</button> | |
{% else %} | |
{% if not index < photos.number and index < photos.paginator.show_pages %} | |
<a href="?page={{ index }}"><button class="btn btn-success mt-2 mb-2">{{ index }}</button></a> | |
{% endif %} | |
{% endif %} | |
{% endfor %} | |
{% if photos.paginator.show_pages <= photos.paginator.num_pages %} | |
{% if photos.paginator.show_pages < photos.paginator.num_pages %} | |
<span>...</span> | |
{% endif %} | |
<a href="?page={{ photos.paginator.num_pages }}"><button class="btn btn-success mt-2 mb-2">{{ photos.paginator.num_pages }}</button></a> | |
{% endif %} | |
{% if photos.has_next %} | |
<a href="?page={{ photos.next_page_number }}"><button class="btn btn-success mt-2 mb-2">Next</button></a> | |
{% endif %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment