社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

Django分页问题 pagination

fittaoee • 9 年前 • 3724 次点击  

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

目前做了这些工作:

一、修改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
 
3724 次点击  
文章 [ 7 ]  |  最新文章 9 年前
MCC
Reply   •   1 楼
MCC    9 年前

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

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

fittaoee
Reply   •   2 楼
fittaoee    9 年前

@shen_gan 好的。谢谢

fittaoee
Reply   •   3 楼
fittaoee    9 年前

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

shen_gan
Reply   •   4 楼
shen_gan    9 年前

@MCC

@fittaoee

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

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

MCC
Reply   •   5 楼
MCC    9 年前

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

fittaoee
Reply   •   6 楼
fittaoee    9 年前

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

MCC
Reply   •   7 楼
MCC    9 年前

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

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