经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Django » 查看文章
python Django框架实现web端分页呈现数据
来源:jb51  时间:2019/11/1 8:33:56  对本文有异议

这里介绍使用python-Django框架来实现web端分页呈现数据,主要说明对应的views,urls,templates三个文件的编程逻辑的实现。

首先介绍Django中的paginator类。paginator是Django中提供的可以实现管理数据分页的类。

  1. from django.core import paginator

下面是本文用到的paginator中的属性和方法。

Paginator对象

1. 构造:Paginator(列表,int):返回分页的整体对象。
2. page_range:返回页码列表 [1,2,3,4…]
3. page(num):返回num页的数据内容

Page对象

1. 构造:Paginator对象的page()方法返回Page对象。
2. number:返回当前页的序号。
3. paginator:当前page对象相关的Paginator对象。page.paginator相当于Paginator对象。

A. 构造url。

  1. #---urls.py------
  2. from django.conf.urls import url
  3. import views
  4. urlpatterns = [
  5. # 这个url构造在根目录下
  6. # 定义为'info/数字'是为了传一个页面序号为参数给视图函数
  7. # 视图函数接收到这个数字为参数后,就可以调用对应页的数据呈现
  8. # 例如我们输入www.xxx.com/info/3,视图函数就会接收到(request,3)两个参数
  9. url(r'^info/(\d*)$',views.info),
  10. ]
  11. #---------

B. 编写视图函数的逻辑。

  1. #---views.py---
  2. from django.shortcuts import render
  3. # 这里的lcoation是定义的模型类,包含有若干条地名数据
  4. from models import location
  5. from django.core import paginator
  6.  
  7. # 视图函数
  8. # 同样,index是url传进来的页面序号
  9. def info(request,index):
  10. # 获取所有的的数据,list是一个列表,包含有所有数据对应的实例对象
  11. list = location.objects.all()
  12. # 使用Paginator方法返回一个分页的对象
  13. # 这个对象包括所有数据,分页的情况
  14. pag = paginator.Paginator(list,3)
  15. # 使用此判断语句是为了在用户跳转www.xxx.com/info/时也能访问第一页
  16. if index=='':
  17. index=1
  18. # 返回指定(index)页的数据,用于呈现在指定页上
  19. page = pag.page(index)
  20. # 构造上下文,以便html文件中能调用对应页的数据
  21. context = {
  22. 'page':page,
  23. }
  24. return render(request,'booktest/info.html',context)
  25. #---------

C. 模板文件。

  1. #---info.html------
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. </head>
  8. <body>
  9. <ul>
  10. # 视图函数传进来的上下文page是指定页的数据
  11. {% for each in page %}
  12. # 遍历显示每条数据
  13. <li>{{ each.location_name }}</li>
  14. {% endfor %}
  15. </ul>
  16. <hr>
  17. # 这里是重点
  18. # 同样还是需要调用视图函数传进来的page页的页码
  19. # page.paginator得到page的paginator对象
  20. # page.pageinator.page_range page_range可以返回页面列表[1,2,3,4...]
  21. # 遍历页面列表
  22. {% for index in page.paginator.page_range %}
  23. # page.number是视图函数现在呈现页的页码
  24. # 这个页码不需要做超链接
  25. {% if index == page.number %}
  26. <span>{{ index }}</span>
  27. {% else %}
  28. # 生成每页超链接
  29. # 点击每一个数字对应的链接就是'/info/点击的页数'
  30. # 这样在url解析的时候,又可以把这一页的编号传给视图函数
  31. # 视图函数根据这个页码呈现对应的内容
  32. <a href="/info/{{index}}" rel="external nofollow" >{{ index }}</a>
  33. {% endif %}
  34. {% endfor %}
  35.  
  36. </body>
  37. </html>
  38. #---------

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号