Py学习  »  问与答

Django分页问题 pagination

fittaoee • 8 年前 • 3184 次点击  

新手请教一个问题。例如用户在网站上进行一次搜索,返回符合的结果有七条,我希望一页只显示五条结果,将所有的结果分两页显示。

目前做了这些工作:

一、修改views.py文件: 1)在views.py开头加入了from django.core.paginator import Paginator, PageNotAnInteger 2)在对应页面的部分加入与分页有关的代码:

paginator = Paginator(results, 5)
page = request.GET.get('page')

try:
        results = paginator.page(page)
except PageNotAnInteger:
        results = paginator.page(1)

二、修改HTML文档: 接下来我又在HTML文档相应的部分加入了:

{% if results.has_previous %}
   <a href="?page={{results.previous_page_number}}">上一页</a>
{% endif %}

Page {{ results.number }} of {{ results.paginator.num_pages }}

{% if results.has_next %}
   <a href="?page={{results.next_page_number}}">下一页</a>
{% endif %}

修改完后,页面返回了五条结果,相应位置显示出了 “Page 1 of 2 下一页 “ ,但当我点击”下一页“ 时,页面却跳转到了网站首页,而没有像预想的那样继续显示下一页结果。请问是哪里出了问题呢?

现在页面对应的url是:

url(r'^search_results/', 'site.views.search_results', name='search_results'),

请问是否需要在url第一部分后面加入正则表达式? 使用的版本是Django 1.8 先谢谢大家了!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1243
 
3184 次点击  
文章 [ 7 ]  |  最新文章 8 年前
MCC
Reply   •   1 楼
MCC    8 年前

@shen_gan 要用post的话就是怎么把post传到下一页上面去

django的分页其实就是个“分页”,具体view上怎么用是很灵活的。。。

fittaoee
Reply   •   2 楼
fittaoee    8 年前

@shen_gan 好的。谢谢

fittaoee
Reply   •   3 楼
fittaoee    8 年前

@MCC 如果用post做的话,有办法吗

shen_gan
Reply   •   4 楼
shen_gan    8 年前

@MCC

@fittaoee

虽然我也没有用过对 POST 结果进行分页,但是感觉分页还是应该在 GET 请求上使用,(还是说分页功能不能用在 POST 请求上?)

参考这个: http://www.oschina.net/question/922525_168311

MCC
Reply   •   5 楼
MCC    8 年前

@fittaoee 搔头。。。如果我来弄的话search就不用post,用get了。。。

fittaoee
Reply   •   6 楼
fittaoee    8 年前

@MCC 对,是用POST形式生成的。那请问如何把前一页post的东西传过去呢?谢谢

MCC
Reply   •   7 楼
MCC    8 年前

应该不用改变正则,因为下一页的链接是用?page=XXX的get形式下去的

这个search页面本身是用post的形式去生成的吗?(我猜是)那么如果要到下一页,应该把前一页的post的东西继续传过去。。