第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页
第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页
分页可以用一个第三方分页模块django-pure-pagination
下载地址:https://github.com/jamespacileo/django-pure-pagination#settings
下载后安装此模块即可
使用pure-pagination分页配置
settings.py
注册分页app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_users', # 注册 APP
'app_courses',
'app_organization',
'app_operation',
'xadmin', # 注册xadmin的app
'crispy_forms', # 注册xadmin的依赖app
'captcha', # 注册验证码app
'pure_pagination', # 注册分页app
]
设置分页配置
# 配置分页
PAGINATION_SETTINGS = {
'PAGE_RANGE_DISPLAYED': 10, # 总共显示多少个页码
'MARGIN_PAGES_DISPLAYED': 2, # 页面过多时间隔个数 'SHOW_FIRST_PAGE_WHEN_INVALID': True, # 超出页码范围,返回到第一页
}
逻辑处理
注意:
1,说明,下面红色背景的地方,就是分页模块的功能,是分页模块固定的写法,
2,只有黄色背景的地方参数我们可以定义的
3,最后传到html页面的people对象很重要,因为无论是显示数据,还是显示分页导航都循环的这个people
from django.shortcuts import render, HttpResponse, redirect # 导入django向浏览器返回方法
from django.views.generic.base import View
from django.db.models import F,Q
from pure_pagination import Paginator, EmptyPage, PageNotAnInteger #导入分页模块的方法 from app_organization.models import CityDict, CourseOrg # 数据库表 class org_list(View):
def get(self, request):
# 城市
cheng_shi = CityDict.objects.all() # 课程机构
ji_gou = CourseOrg.objects.all() # 获取数据库的所有数据
ji_gou_shu = ji_gou.count() # 统计获取到的数量 # 分页功能
try:
page = request.GET.get('page', 1) # 获取当前页码,如果没有默认1
except PageNotAnInteger: # 如果获取页码出错,默认1
page = 1 p = Paginator(ji_gou, 1, request=request) # 执行分页函数,参数1数据库的数据,参数2显示多少条数据,参数3request people = p.page(page) # 返回一个,包含了分页数据和分页导航的对象 return render(request, 'org_list.html', {
'cheng_shi': cheng_shi, # 城市数据
'people': people, # 将分页对象传到html页面
'ji_gou_shu': ji_gou_shu, # 机构数量
}) def post(self, request):
pass
html页面
注意:
1,说明,下面红色背景的地方,就是分页模块的功能,是分页模块固定的写法,
2,只有黄色背景的地方参数我们可以定义的
3,最后传到html页面的people对象很重要,因为无论是显示数据,还是显示分页导航都循环的这个people
<div class="butler_list company list">
<div class="layout">
<div class="head">
<ul class="tab_header">
<li class="active"><a href="?ct=&city=">全部</a></li>
<li class=""><a href="?sort=students&ct=&city=">学习人数 ↓</a></li>
<li class=""><a href="?sort=courses&ct=&city=">课程数 ↓</a></li>
</ul>
</div>
{# 循环机构 #}
{% for ji in people.object_list %} {# 分页对象.object_list里面是分页后的数据 #}
<dl class="des difdes">
<dt>
<a href="org-detail-homepage.html">
<img width="200" height="120" class="scrollLoading"
data-url="{{ MEDIA_URL }}{{ ji.image }}"/> {# 需要拼接静态资源路径 #}
</a>
</dt>
<dd>
<div class="clearfix">
<a href="org-detail-homepage.html">
<h1>{{ ji.name }}</h1>
<div class="pic fl"> <img src="/static/images/authentication.png"/> <img src="/static/images/gold.png"/> </div>
</a>
</div>
<ul class="cont">
<li class="first"><p class="pic9">课程数:<span>1</span></p>
<p class="c7">学习人数:<span>1000</span></p></li>
<li class="c8" style="padding-left:18px;">北京市海淀区中关村北大街</li>
<li class="pic10" style="padding-left:18px;">经典课程: <a href="/diary/19/">c语言基础入门</a> <a href="/diary/16/">数据库基础</a> </li>
</ul>
</dd>
<div class="buy start_groupbuy jsShowPerfect2" data-id="22"><br/>联系<br/>服务</div>
</dl>
{% endfor %} </div>
<div class="pageturn">
<ul class="pagelist">
{% if people.has_previous %} {# 判断有上一页显示上一页 #}
<li class="long"><a href="?{{ people.previous_page_number.querystring }}">上一页</a></li>
{% endif %} {% for page in people.pages %} {# 循环页码 #}
{% if page %}
{% ifequal page people.number %} {# 判断当前页码,显示当前页码 #}
<li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li>
{% else %} {# 显示其他页码 #}
<li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li>
{% endifequal %}
{% else %}
...
{% endif %}
{% endfor %} {% if people.has_next %} {# 判断有下一页显示下一页 #}
<li class="long"><a href="?{{ people.next_page_number.querystring }}">下一页</a></li>
{% endif %} </ul>
</div>
</div>

第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页的更多相关文章
- 第三百八十二节,Django+Xadmin打造上线标准的在线教育平台—xadmin管理员详情页面布局,导航图标设置
第三百八十二节,Django+Xadmin打造上线标准的在线教育平台—xadmin进阶 1.后台管理员详情页面布局 后台管理员详情页面,区块是可以拖动的,而且分为了很多个区块 这个页面的布局在xadm ...
- 第三百九十三节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置
第三百九十三节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置 设置后台某个字段的排序规则 在当前APP里的adminx.py文件里的数据表管理器里设置 order ...
- 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击
第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...
- 第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传
第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传 实现原理 前台用cropper插件,将用户上传头像时裁剪图片的坐标和图片,传到逻辑处理 ...
- 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示
第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件, ...
- 第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页
第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页 根据用户的筛选条件来结合分页 实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值, ...
- 第三百八十六节,Django+Xadmin打造上线标准的在线教育平台—HTML母版继承
第三百八十六节,Django+Xadmin打造上线标准的在线教育平台—HTML母版继承 母板-子板-母板继承 母板继承就是访问的页面继承一个母板,将访问页面的内容引入到母板里指定的地方,组合成一个新页 ...
- 第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html
第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入dja ...
- 第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册
第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, incl ...
随机推荐
- C#之Console
Console.Write 表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入.Console.WriteLine 表示向控制台写入字符串后换行.Console.Read 表示从控制 ...
- 【DMQ引擎】-DMQ多进程插件引擎服务平台介绍
写过服务端项目的程序员可能都有非常痛苦的经历,服务端经常奔溃,无从查起.的确一个服务端要稳定下来要经过长期的积累,不停的测试,调试,发现问题,解决问题.这个周期可能很长,几个月,甚至以年计算.许多企业 ...
- Android.mk遍历子目录所有文件
转:http://blog.csdn.net/langresser_king/article/details/8272736 define all-cpp-files-under$(patsubst ...
- oracle本月、上月、去年
select trunc(sysdate, 'month') 本月第一天, trunc(last_day(sysdate)) 本月最后一天, trunc(add_month ...
- ntpd与ntpdate的区别
之前配置ntpd的时候搜到一句话,印象很深刻,也觉得很有标题党的效果,就借鉴为标题了:“我认为有几种人是必须不招聘/裁掉的: 1 用ntpdate代替ntpd的人”但具体原因不太懂,总觉得还是用ntp ...
- 几种经典的Hash算法的实现(源代码)
来源声明: http://blog.minidx.com/2008/01/27/446.html 先保存下来,以备后面研究,现在还看不懂! 哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这 ...
- [uboot]uboot中run的一些command在源码位置
如在uEnv.txt中, loadfdt=fatload mmc ${mmcdev}: ${fdtaddr} ${fdtfile} fdtboot=run mmc_args; bootz ${load ...
- ActiveMQ两种模式PTP和PUB/SUB<转>
1.PTP模型 PTP(Point-to-Point)模型是基于队列(Queue)的,对于PTP消息模型而言,它的消息目的是一个消息队列(Queue),消息生产者每次发送消息总是把消息送入消息队列中, ...
- sql分页存储过程比较
一,先创建一百万条数据 drop table #tmp create table #tmp ( id ,) primary key, name ) ) declare @i int begin ins ...
- Vmware10 Centos7 共享文件夹设置方法
先安装包依赖: yum -y install kernel-devel-$(uname -r) yum -y install net-tools perl gcc gcc-c++ 安装vm tool ...