mxonline实战8,机构列表分页功能,以及按条件筛选功能

 

对应github地址:列表分页和按条件筛选

 
 
一. 列表分页
 
1. pip install django-pure-pagination
 
2. settings.py中
install app中添加'pure_pagination',
设置参数
PAGE_RANGE_DISPLAYED:总共会显示多少个page,包括省略号,包括两边和中间。下面例子中从1到100的话,这里要设为100
MARGIN_PAGES_DISPLAYED:旁边会显示多少个。
SHOW_FIRST_PAGE_WHEN_INVALID:当输入页数不合法是否要跳到第一页
 
 
 
 
3. 修改org-list.html中机构for模板标签,把all_orgs改为all_orgs.object_list
 
 
4. 修改organization/views.py如下
 
 
5. 在org-list.html中自定义分页样式
 
 
 
 
 
二. 分类筛选功能
 
 
1. 修改org-list.html中的城市代码,当用户点击某一个city时对应加上参数city的id
 
2. 后台处理这个city,在organiztion/views.py-> class OrgView添加
 
return中添加city_id
 
 
3. 当选择某一个城市进行筛选时,城市显示选中样式。需要把city_id传回html,使得知道是哪个被选中
原代码
修改为
 
3.1 此时,全部和选中的城市都会标绿,怎么解决这个问题呢
在organization/views.py中我们定义没有城市选中时,city_id为空
那么可修改org-list.html中表示"全部"的代码如下
 
 
 
 
4. 按类别进行筛选,和城市筛选类似
org-list.html中表示类别的原代码如下
 
4.1 修改views.py,在organiztion/views.py-> class OrgView添加
 
4.2 return语句中增加
 
4.3 修改前端中表示机构类别的代码为
 
相应的也可以修改城市分类中加上机构类别管理选择
 
 
4.4 此时筛选统计结果会有问题,一直显示总机构数,如果想得到按要求筛选结果的统计结果,只需要移动代码到筛选代码之后
 
 
 
三. 授课机构排名(网页右边) 
 
1. 在organiztion/views.py-> class OrgView添加hot_orgs变量
 
并且把这个变量加在return render的字典参数中,从而传递到前端网页
 
2. 在org-list.html中找到授课机构排名部分代码,发现每个机构也是一个<dl>标签,创建一个for循环模板标签,复制一个<dl>到循环中,修改机构名,地址为模板变量,删掉其他的<dl>
需要注意的是{{ forloop.counter }}这个是for循环中自动计数的变量,每循环一次,值就加1
 
 
 
四. 学习人数,课程数排序
 
1. 在organization/models.py-->CourseOrg中添加学习人数,课程数变量,然后迁移数据库
 
2. 修改org-list.html中的学习人数和课程数代码中<a>标签的href属性,以便在view函数中取到相应的sort值,前面加问号是固定写法
 
 
3. 在后台view中添加
然后添加sort到return render的字典参数中传递给前端
 
4. 修改org-list.html中学校人数和课程数代码,实现选中效果,以及和"机构类别","排序地区"之间的关联筛选

 

 
posted @ 2018-08-22 10:48  坚强的小蚂蚁  阅读(275)  评论(0编辑  收藏  举报