加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django分页器

发布时间:2020-12-20 10:18:46 所属栏目:Python 来源:网络整理
导读:django提供了分页的工具,存在于django.core中 Paginator? :数据分页工具 Page:具体的某一页面 Paginator : 对象创建: Paginator(数据集,每一页数据数) 属性: count:对象总数 num_pages:页面总数 page_range: 页码列表,从1开始 方法: page(整数): 获得

django提供了分页的工具,存在于django.core中

   Paginator? :数据分页工具

   Page:具体的某一页面

Paginator:

对象创建: Paginator(数据集,每一页数据数)

属性:

count:对象总数

num_pages:页面总数

page_range: 页码列表,从1开始

方法:

page(整数): 获得一个page对象

常见错误:

InvalidPage:page()传递无效页码

PageNotAnInteger:page()传递的不是整数

Empty:page()传递的值有效,但是没有数据

?

Page:

对象获得,通过Paginator的page()方法获得

属性:

object_list: 当前页面上所有的数据对象

number: 当前页的页码值

paginator: 当前page关联的Paginator对象

方法:

has_next() :判断是否有下一页

has_previous():判断是否有上一页

has_other_pages():判断是否有上一页或下一页

next_page_number():返回下一页的页码

previous_page_number():返回上一页的页码

len():返回当前页的数据的个数

?

实现分页:

数据库的内容自己添加即可

创建模型:

1 class RequestLog(models.Model):
2     r_ip = models.CharField(max_length=32)
3     r_time = models.FloatField(default=0)

视图函数:

1 def get_log(request):
2     logs = RequestLog.objects.all()
3     paginator = Paginator(logs,3)
4     try:
5         current_page = int(request.GET.get("page",1))
6         page = paginator.page(current_page)
7     except EmptyPage:
8         page=paginator.page(1)
9     return render(request,logs.html,context=locals())

路由注册:

1 urlpatterns = [
2     url(r^getlog/,views.get_log),3 ]

html分页:使用bootstrap,美化版分页

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Logs</title>
 6     <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js">
 7         integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
 8             crossorigin="anonymous"
 9     </script>
10 </head>
11 <body>
12 <h2>Logs_ip</h2>
13 <ul>
14     {% for log in page.object_list %}
15         <li>{{ log.r_ip }}</li>
16     {% endfor %}
17 </ul>
18 <nav aria-label="Page navigation">
19   <ul class="pagination">
20     <li>
21       <a href="?page={{ current_page|add:-1 }}" aria-label="Previous">
22         <span aria-hidden="true">上一页</span>
23       </a>
24     </li>
25       {% for item in paginator.page_range %}
26           {% if current_page == item  %}
27                <li class="active"><a href="?page={{ item }}">{{ item }}</a></li>
28               {% else %}
29                <li><a href="?page={{ item }}">{{ item }}</a></li>
30           {% endif %}
31       {% endfor %}
32     <li>
33       <a href="?page={{ current_page|add:+1 }}" aria-label="Next">
34         <span aria-hidden="true">下一页</span>
35       </a>
36     </li>
37   </ul>
38 </nav>
39 </body>
40 </html>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读