天天看點

Django 實作組合搜尋

本文參考:https://www.cnblogs.com/lzc69/p/11964220.html

目的:實作如圖的組合搜尋

Django 實作組合搜尋

1.表結構的設計

不難看出需要三張表:分類表、地區表和電影表,其中分類和地區沒有關聯,分類和電影應該是多對多的關系,地區和電影應該是一對多的關系,是以model如下:

2.資料的處理

<1>首先需要知道前端選擇了什麼才能過濾資料出來,是以這裡前端需要傳遞兩個值:分類的值和地區的值(更多列則更多值)

這裡采用了:url-分類id-地區id 的形式,當然也可以用?k=v的形式,但是用url-分類id-地區id 的形式爬蟲會這是靜态檔案,權重更高,更有利于收錄,是以推薦使用這種方法

用這種形式,需要url做對應配置:

這裡url會以字典形式傳遞分類id和地區id給view函數

<2>view 函數處理

拿到分類id和地區id就能過濾出電影了,前端還需要目前選擇的值進行渲染,此值又通過url傳遞給view的kwargs參數,是以後端處理并不複雜,如下:

3.前端的渲染

前端的渲染要點在于判斷目前值,目前值等于item的id的時候,指派class="active" 進行渲染,其他的值不變,隻要從kwargs中取得即可,代碼如下: