I am creating an Order List page for my e-commerce project and I am trying to add pagination and limit the number of orders showing in one page to 6. I don't know the reason for not working or what might I be missing.
Here is the views.py:
class OrderList(LoginRequiredMixin, ListView):
model = Order
template_name = "user_orders.html"
paginate_by = 6
def get(self, *args, **kwargs):
try:
order = Order.objects.filter(user=self.request.user, ordered=True)
context = {
'orders': order
}
return render(self.request, 'user_orders.html', context)
except ObjectDoesNotExist:
messages.warning(self.request, "You do not have any orders")
return redirect("/")
Here is the template.html
<table class="table">
<thead>
<tr>
<th scope="col">No.</th>
<th scope="col">Order Reference</th>
</tr>
</thead>
<tbody>
<tr>
{% for order in orders %}
<th scope="row">{{ forloop.counter }}</th>
<td>{{order.ref_code}}</td>
</tr>
{% endfor %}
</tbody>
</table>
<!--Pagination-->
{% if is_paginated %}
<nav class="d-flex justify-content-center wow fadeIn">
<ul class="pagination pg-blue">
<!--Arrow left-->
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}" aria-label="Previous">
<span aria-hidden="true">«</span>
<span class="sr-only">Previous</span>
</a>
</li>
{% endif %}
<li class="page-item active">
<a class="page-link" href="?page={{ page_obj.number}}">{{ page_obj.number}}
<span class="sr-only">(current)</span>
</a>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}" aria-label="Next">
<span aria-hidden="true">»</span>
<span class="sr-only">Next</span>
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
<!--Pagination-->