首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:不改变url的分页?

Django:不改变url的分页?
EN

Stack Overflow用户
提问于 2018-07-27 04:18:42
回答 2查看 1.4K关注 0票数 0

我通过这个链接学习了Django的分页基础:https://simpleisbetterthancomplex.com/tutorial/2016/08/03/how-to-paginate-with-django.html

然而!我唯一的问题是,我想在不更改url的情况下进行分页。

我的意思是,当一个html页面中有多个表时,我需要对一个表进行分页。

如何只对一个表进行分页?

我的代码:

这是html模板的基本结构:

代码语言:javascript
复制
                  ...      
                    <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对象

代码语言:javascript
复制
post

每个帖子都有自己的表格和分页器:

代码语言:javascript
复制
post.statusPage

是帖子的页面对象。

EN

回答 2

Stack Overflow用户

发布于 2018-08-01 04:01:55

与其自己构建分页并处理遇到的复杂性,不如考虑使用DataTables

您可以在单个视图上放置多个表,并且每个表的分页都是通过javascript处理的,而不需要对URL进行实际更改。您可以使用标准的django模板标记将值插入到表中,也可以构建一个简单的API (使用DRF或django的JSON库)来通过Ajax提供表。这有点高级,但当您有大量数据时,它可以确保您不会一次将所有数据发送给用户并占用系统内存。

票数 3
EN

Stack Overflow用户

发布于 2018-07-27 13:00:37

我不确定我是否知道您要做什么,但您的视图似乎返回了一整套表格,您希望用户能够一次查看一个表格,只需在中间单击一次,而不是永远向下滚动。您不希望访问不同的URL,因此这需要在客户端浏览器中处理,这意味着这不是Django问题,因此也不是Django解决方案。(称其为分页,但又希望所有内容都出现在同一个URL上,从而成为同一个web页面,这有点令人困惑。)

从现在开始,最简单的方法可能是切换'show-hide' html divs,即为每个页面创建一个按钮。因此,每个页面都是呈现的,但有选择地呈现。您必须修改那里的小脚本以将所有其他页面设置为隐藏。很抱歉,对于你的特殊情况,我没有更好的例子。可能有一堆更优雅的、大量使用javascript的解决方案,但我不能对此给出建议。

如果你愿意为下一页发送一个Get请求的查询字符串,你可以通过创建包含'?param=‘类型页码的链接,用Django完全解决这个问题。然后可以从'request.GET.getlist('param')‘获取参数以返回正确的页面。但是,如果您的视图现在返回所有内容,您可能不想开始生成和处理查询字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51546893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档