Reputation: 87
Hi im new to django and am trying to set up pagination but its not working i don't know why. this is my code for the project. paginator is working it is limiting to 5 but just not showing the pages number. when i type ?page=2 in the address bar it works what am i doing wrong please help.
in my view class
def post_list(request):
queryset = Post.objects.all().order_by("-timestamp")
paginator = Paginator(queryset, 5) # Show 5contacts per page
page_request_var = "page"
page = request.GET.get(page_request_var)
try:
queryset = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
queryset = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
queryset = paginator.page(paginator.num_pages)
context = {
"object_list": queryset,
"page_request_var": page_request_var,
}
return render(request, "community.html", context)
in my template
<div class="container">
{% for obj in object_list %}
<div class="row">
<div class="col-sm-4 col-md-4">
<div class="post">
<div class="post-img-content">
<img src="http://placehold.it/460x250/e67e22/ffffff&text=HTML5" class="img-responsive" />
<span class="post-title"><b><a href='{{ obj.get_absolute_url }}'>{{ obj.title }}</a></b><br />
</span>
</div>
<div class="content">
<div class="author">
By <b>changeme</b> |
<small> {{ obj.timestamp|timesince }} ago</small>
</div>
<div>
{{ obj.content|linebreaks|truncatechars:120 }}
</div>
<div>
<a href="{{ obj.get_absolute_url }}" class="btn btn-warning btn-sm">Read more</a>
</div>
<hr />
</div>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="container">
<div class="pagination">
<span class="step-links">
{% if queryset.has_previous %}
<a href="?{page_request_var}=1">« first</a>
<a href="?{page_request_var}={{contacts.previous_page_number}}">previous</a>
{% endif %}
<span class="current">
Page {{queryset.number}} of {{queryset.paginator.num_pages}}.
</span>
{% if queryset.has_next %}
<a href="?{page_request_var}={{queryset.next_page_number}}">next</a>
<a href="?{page_request_var}={{queryset.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
</div>
it just shows pages of. what am i doing wrong ?
Upvotes: 1
Views: 1408
Reputation:
You're using queryset
in your template even though you don't have it in your context. As you can see, you're setting queryset
to object_list
.
context = {
"object_list": queryset,
"page_request_var": page_request_var,
}
Simply, use object_list
rather than queryset
in your template.
or change object_list
to queryset
context = {
"queryset": queryset,
"page_request_var": page_request_var,
}
Upvotes: 4