第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页
第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页
根据用户的筛选条件来结合分页

实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值,传入逻辑处理就行数据库条件查询,将查询条件值在返回html页面判断是否是选中样式,最后将所有需要关联的筛选请求加上彼此逻辑处理传回来的查询条件值
html请求传参

黄色背景为请求传参
红色背景为逻辑处理传过来的查询条件判断样式
<div class="wp butler_list_box list">
<div class='left'>
<div class="listoptions">
<ul>
<li>
<h2>机构类别</h2>
<div class="cont">
<a href="?leib=&chsh={{ chsh_id }}"><span class="{% ifequal lei_bie '' %}active2{% endifequal %}">全部</span></a> <a href="?leib=pxjg&chsh={{ chsh_id }}"><span class="{% ifequal lei_bie 'pxjg' %}active2{% endifequal %}">培训机构</span></a> <a href="?leib=gx&chsh={{ chsh_id }}"><span class="{% ifequal lei_bie 'gx' %}active2{% endifequal %}">高校</span></a> <a href="?leib=gr&chsh={{ chsh_id }}"><span class="{% ifequal lei_bie 'gr' %}active2{% endifequal %}">个人</span></a> </div>
</li>
<li>
<h2>所在地区</h2>
<div class="more">更多</div>
<div class="cont">
<a href="?chsh=&leib={{ lei_bie }}"><span class="{% ifequal chsh_id '' %}active2{% endifequal %}">全部</span></a>
{# 循环城市 #}
{% for ch in cheng_shi %}
<a href="?chsh={{ ch.id }}&leib={{ lei_bie }}"><span class="{% ifequal chsh_id ch.id|stringformat:'i' %}active2{% endifequal %}">{{ ch.name }}</span></a>
{% endfor %}
</div>
</li>
</ul>
</div>
逻辑处理
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): # 课程机构
ji_gou = CourseOrg.objects.all() # 获取数据库的所有数据 # 城市帅选
cheng_shi = CityDict.objects.all()
chsh_id = request.GET.get('chsh', '') # 获取用户点击了城市传过来的城市id
if chsh_id:
ji_gou = ji_gou.filter(city_id=chsh_id) # 帅选出指定城市的数据 # 类别帅选
lei_bie = request.GET.get('leib', '') # 获取用户点击了城市传过来的城市id
if lei_bie:
ji_gou = ji_gou.filter(category=lei_bie) # 帅选出指定城市的数据 ji_gou_shu = ji_gou.count() # 统计获取到的数量 # 分页功能
try:
page = request.GET.get('page', 1) # 获取当前页码,如果没有默认1
except PageNotAnInteger: # 如果获取页码出错,默认1
page = 1 p = Paginator(ji_gou, 4, 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, # 机构数量
'chsh_id': chsh_id, # 城市帅选ID
'lei_bie': lei_bie # 类别
}) def post(self, request):
pass
第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页的更多相关文章
- 第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页
第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页 分页可以用一个第三方分页模块django-pure-pagination 下载地址:https://github.c ...
- 第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码
第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码 下载地址:https://github.com/mbi/django- ...
- 第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍
第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍 配置django的admin数据库管理后台 首先urls.py配置数据库后台路由映射,一 ...
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表.验证码表.轮播图表 创建Django项目 项目 settings.py ...
- 第三百八十六节,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 ...
- 第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理
第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理 将一个app下的models数据库表注册到xadmin后台管理 重点 ...
- 第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装
第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装 xadmin介绍 xadmin是基于Django的admin开发的更完善的后台管理系统,页面基于Bootstr ...
随机推荐
- 源码安装mysql5.6x启动报错:[ERROR] Can't find messagefile '/data/mysqldata/3306/english/errmsg.sys'
:: mysqld_safe Starting mysqld daemon with databases from /data/mysqldata//data -- :: [Warning] The ...
- 行为类模式(二):命令(Command)
定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. UML 优点 能比较容易的设计一个命令队列 可以较容易的将命令加入日志 ...
- Asp.net Core 项目API接口服务器部署
Windows server 2008服务器部署: DotNetCore.1.0.0.RC2-WindowsHosting 或者DotNetCore.1.0.5_1.1.2-WindowsHostin ...
- [Windows Azure] How to Create and Configure SQL Database
How to Create and Configure SQL Database In this topic, you'll step through logical server creation ...
- 【Java工具方法】给集合按数量分组
有时候需要给集合(如List)按数量分组,比如全集太大时,需要分批处理:或效率有点低,分批并发处理.于是,写了个将List按数量分组的方法. package controller; import ja ...
- MyBean 框架入门手册<感谢[青铜]整理的如此细致和系统>
MyBean 框架入门手册 2014/9/15 by lighttop 目 录 MyBean 框架学习笔记............................................... ...
- 【C/C++】void指针知多少
void指针 void指针平时用的地方不多,但是不代表它不重要 #include <stdio.h> typedef ]; //指针数组的指针类型 int main(void) { voi ...
- 【ARM】2410裸机系列-中断处理
目的 为了更好地掌握S3C2410中断的原理及中断程序的编写. 内容利用S3C2410的外部中断0和外部中断1实现两个按键功能 原理 本次选择的是外部中断EXTINT0和EXTINT11.中断的产生分 ...
- LeetCode: Reverse Integer 解题报告
Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...
- django signal
@receiver(post_save, sender=User) def create_account(sender, instance=None, **kwargs): if instance i ...