前置准备
新建django项目应用app01
models.py
1 | from django.db import models |
urls.py
1 | from app01 import views |
数据库迁徙
1 | python3 manage.py makemigrations |
views.py
批量录入数据
1 | # 录入初识数据100条 |
index.html
1 | <ul> |
如上我们有了100条数据
分页器 Paginator
1 | # 引入分页器 |
> 通过url的get参数模拟动态页码
1 | from django.shortcuts import render |
index.html
1 | <ul> |
访问
1 | http://127.0.0.1:8000/index/ |
引入bootstrap分页组件
- paginator.page_range 分页列表
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> |
点击页码a标签跳转url设置当前页码数据
1 | {% for index in paginator.page_range %} |
上一页下一页处理
1 | <li><a href="?page={{ current_page|add:-1 }}" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li> |
通过分页器的上一页下一页api接口处理
- current_page_data.previous_page_number
- current_page_data.next_page_number
1 | <li><a href="?page={{ current_page_data.previous_page_number }}" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li> |
> 边界值处理
- current_page_data.has_previous
- current_page_data.has_next
1 | {% if current_page_data.has_previous %} |
页码过多时的处理
- 左5右5
总不能分页100页全显示出来吧!
1 | # 特殊处理 |
index.html里的页码循环部分替换页码列表page_range
1 | {% for index in page_range %} |