第三百八十九節,Django+Xadmin打造上線標準的在線教育平臺—列表篩選結合分頁
阿新 • • 發佈:2017-09-18
篩選 clas eno int 返回 view left 取數據 .html
第三百八十九節,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打造上線標準的在線教育平臺—列表篩選結合分頁