[py][mx]實現按照課程機構排名,按照學習人數排名
阿新 • • 發佈:2018-02-10
多少 mar category 2個 default efault http png img
原型是
實現效果
因為要按照這兩個指標排名, 模型中現在還沒有這2個字段(整數),所以需要修改模型.
修改模型,添加2個排序指標的字段
class CourseOrg(models.Model):
...
students = models.IntegerField(default=0,verbose_name="學習人數")
course_nums = models.IntegerField(default=0,verbose_name="課程數")
修改views實現排序,返回排序結果,返回sort的值判斷顯示高亮
class OrgView(View): # 課程機構列表頁 def get(self, request): all_orgs = CourseOrg.objects.all() # 所有課程機構 ... sort = request.GET.get("sort", "") ## 獲取到前端傳過來的關鍵字sort的值 if sort == "students": all_orgs = all_orgs.order_by("-students") # 按照學生數倒序排列 elif sort == "courses": all_orgs = all_orgs.order_by("-course_nums") # 按照課程數倒序排列 ... org_nums = all_orgs.count() # 多少家課程機構 ... return render(request, 'org-list.html', { ... 'sort': sort })
模板修改
- 修改鏈接
<a href="?sort=courses&ct={{ category }}&city={{ city_id }}">按課程數排名</a>
註: 需要記住上面按照機構類別和所在地區的結果(本質上是記住上面篩選的鏈接)
根據後端返回的sort的值來判別顏色顯示
<p class="{% ifequal sort '' %}bgColor{% endifequal %}">
<div> <p class="{% ifequal sort '' %}bgColor{% endifequal %}"><a href="?&ct={{ category }}&city={{ city_id }}">全部</a></p> <p class="{% ifequal sort 'students' %}bgColor{% endifequal %}"><a href="?sort=students&ct={{ category }}&city={{ city_id }}">按學習人數排名</a></p> <p class="{% ifequal sort 'courses' %}bgColor{% endifequal %}"><a href="?sort=courses&ct={{ category }}&city={{ city_id }}">按課程數排名</a></p> <strong>共{{ org_count }}家</strong> <ul> {% for course_org in all_orgs.object_list %} <li><img src="{{ MEDIA_URL }}{{ course_org.image }}" alt=""></li> <li>{{ course_org }}</li> {% endfor %} </ul> <p>{{ all_orgs.render }}</p> </div>
[py][mx]實現按照課程機構排名,按照學習人數排名