筛选每个城市的培训机构

在前端界面上按照城市的id来显示城市的信息。

在views(视图函数)中我们根据条件进一步筛选。

这里有一个小常识。比如我们在在定义培训机构的model的时候,有一个外键,我们虽然传入的字段名称是city,但是在数据库中实际存储的字段名称是city_id, 这样就给我们使用数据带来极大的方便。

这里刚刚出现了报错,说参数错误:

修改如下:

ok,因为city_id在数据库中也是以整形数的形式存储的,也就是int类型的。而从前端页面传过来的的city_id是字符串类型的,所以需要强制转换成整形数,才能正确的找到要筛选的数据。

附上filter的源码:

我们继续做选中状态的处理,如果当前的city的id和后端传过来的city的ID一样,那么就把当前的city设置成选中的状态。

这里总结的点就是每一个链接都要有一个合理的值,这个值可以是后台传过来的东西。

在这里培训机构的类别是固定的,所以不用再随着后台传入数据的变化而变化。但是培训机构的信息是从后端传过来的。

在这里实现双重筛选,所以每次判断的条件都会取交集。


在培训机构的界面有一个机构排名,我们这里默认按照人气排名。其实这也是一个筛选的问题,或者说是一个排序的问题。

人气体现在什么地方呢,这么看是体现在点击量上,因为点击量越多,说明越受关注。具体的实现如下,直接上代码:

首先定义hot_oegs来存储筛选的信息,比如上面的代码的意思就是在所有的培训机构中抽出人气(点击量)前五名的培训机构。all_orgs是一个列表形式的,我们使用python中的内置的order_by函数对里面的元素进行排序,将排序结果做成切片,显示排名在前的前几个。然后

我们将hot_orgs 传到前端文件,并且传入的名称也是hot_orgs,在前端的html文件中:

这样就完成了机构的排名。

接下来类似,可以实现按照学习人数和课程数进行升序或者降序排序以等等,其实和前面的功能是类似的。


这里还有几个问题要解决下,一个是template中的

接着是表示相等的等号的问题,在views.py文件中,因为是python的语法,所以表示相等的符号是双等号,在templates中(也就是html文件中,表示相等的符号是一个等号),这个要弄清楚。

python自带了很多很有用的函数,这个是它强大的地方。

01-18 19:19
查看更多