我通过这个链接学习了Django的分页基础:https://simpleisbetterthancomplex.com/tutorial/2016/08/03/how-to-paginate-with-django.html
然而!我唯一的问题是,我想在不更改url的情况下进行分页。
我的意思是,当一个html页面中有多个表时,我需要对一个表进行分页。
如何只对一个表进行分页?
我的代码:
这是html模板的基本结构:
...
<table class="uk-table uk-table-striped">
<tbody>
{% for post_status in post.statusPage %}
<tr>
<td>{{ post_status.status_time }}</td>
<td>{{ post_status.repost_count }}</td>
<td>{{ post_status.comment_count }}</td>
<td>{{ post_status.like_count }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if post.statusPage.has_other_pages %}
<ul class="uk-pagination uk-flex-center" uk-margin>
{% if post.statusPage.has_previous %}
<li><a href="#"><span uk-pagination-previous></span></a></li>
{% else %}
<li><a><span uk-pagination-previous></span></a></li>
{% endif %}
{% for i in post.statusPage.paginator.page_range %}
{% if post.statusPage.number == i %}
<li class="uk-active"><span>{{ i }}</span></li>
{% else %}
<li><a href="#">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if post.statusPage.has_next %}
<li><a href="#"><span uk-pagination-next></span></a></li>
{% else %}
<li><a><span uk-pagination-next></span></a></li>
{% endif %}
</ul>
{% endif %}在模板旁边,有多个post对象
post每个帖子都有自己的表格和分页器:
post.statusPage是帖子的页面对象。
发布于 2018-08-01 04:01:55
与其自己构建分页并处理遇到的复杂性,不如考虑使用DataTables。
您可以在单个视图上放置多个表,并且每个表的分页都是通过javascript处理的,而不需要对URL进行实际更改。您可以使用标准的django模板标记将值插入到表中,也可以构建一个简单的API (使用DRF或django的JSON库)来通过Ajax提供表。这有点高级,但当您有大量数据时,它可以确保您不会一次将所有数据发送给用户并占用系统内存。
发布于 2018-07-27 13:00:37
我不确定我是否知道您要做什么,但您的视图似乎返回了一整套表格,您希望用户能够一次查看一个表格,只需在中间单击一次,而不是永远向下滚动。您不希望访问不同的URL,因此这需要在客户端浏览器中处理,这意味着这不是Django问题,因此也不是Django解决方案。(称其为分页,但又希望所有内容都出现在同一个URL上,从而成为同一个web页面,这有点令人困惑。)
从现在开始,最简单的方法可能是切换'show-hide' html divs,即为每个页面创建一个按钮。因此,每个页面都是呈现的,但有选择地呈现。您必须修改那里的小脚本以将所有其他页面设置为隐藏。很抱歉,对于你的特殊情况,我没有更好的例子。可能有一堆更优雅的、大量使用javascript的解决方案,但我不能对此给出建议。
如果你愿意为下一页发送一个Get请求的查询字符串,你可以通过创建包含'?param=‘类型页码的链接,用Django完全解决这个问题。然后可以从'request.GET.getlist('param')‘获取参数以返回正确的页面。但是,如果您的视图现在返回所有内容,您可能不想开始生成和处理查询字符串。
https://stackoverflow.com/questions/51546893
复制相似问题