【发布时间】:2021-07-15 08:14:31
【问题描述】:
默认基于类的视图分页返回所有对象。我的每个用户都有一个我的帐户页面,我需要在其中显示页码。默认情况下,所有用户的分页都是相同的。让你稍微解释一下。如果用户 A 有 10 个项目,而我每页列出 2 个项目,那么用户 A 将在他的帐户中看到总共 5 页,这很好,但用户 B 没有任何项目,他目前只看到像 page1、page2、page3 这样的分页数...在他的帐户中,因为当前分页从数据库中返回所有项目。这是我的代码:
views.py
class BlogMyAccount(ListView):
paginate_by = 10
model = Blog
template_name = 'blog/my-account.html'
ordering = ['-id']
#html
{% for blog in object_list %}
{% if user.id == blog.author.id %}
....my code
{% endif %}
{% endfor %}
<!---pagination code---->
<ul class="pagination justify-content-center mb-4">
{% if page_obj.has_previous %}
<li class="page-item"><a class="page-link" href="?page=1">First Page</a></li>
<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">← Back</a></li>
{% endif %}
{% if page_obj.has_next %}
<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">Next Page →</a></li>
{% endif %}
{% for i in paginator.page_range %}
{% if page_obj.number == i %}
<li class="page-item"><a class="page-link" href="#!">{{ i }}</a></li>
{% elif i > page_obj.number|add:'-3' and i < page_obj.number|add:'3' %}
<li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
{%endif%}
{% endfor %}
<li class="page-item"><a class="page-link" href="?page={{ page_obj.paginator.num_pages }}">Last Page</a></li>
</ul>
在基于函数的视图中,我在分页中传递这样的用户对象:
notifications = Notifications.objects.all().filter(user=user).order_by('-date')
paginator = Paginator(notifications, 20) # Show 25 contacts per page.
我尝试通过在我的分类视图中使用上下文来应用相同的方法,但没有奏效。在基于类的视图中,所有用户的分页都是相同的。
【问题讨论】:
标签: django django-class-based-views