Django之組合搜尋元件(一)

2022-03-17 08:27:34 字數 4198 閱讀 9710

什麼是組合搜尋呢?

比如你想買車,但手裡只有10萬塊!所以你只能在10萬塊的車裡挑選,但你喜歡黑色,因為覺得很高階大氣上檔次,說白了就是裝逼槓槓的!之後售車姐給你拿了個表表,你看到了低於10萬塊且顏色為黑的各種車!其實這就是組合搜尋!

那運用django框架,該程式怎麼實現呢?

那就先看看程式吧!

urls.py

views

from django.contrib.staticfiles.urls import

staticfiles_urlpatterns

from django.conf.urls import

urlfrom django.contrib import

admin

from django.urls import

path

urlpatterns =[

path(

'admin/

', admin.site.urls),

url(r

'^article-(?p\d+)-(?p\d+).html

',views.article), #

定義模板的名字

]

models.py

from django.db import

models

class category(models.model): #

建立分類表

caption = models.charfield(max_length=16)

class articletype(models.model): #

建立文章技術語言類

caption = models.charfield(max_length=16)

class article(models.model): #

建立文章表

title = models.charfield(max_length=32) #

文章標題

content = models.charfield(max_length=255) #

文章內容

category = models.foreignkey(to='

category

',to_field='

id',on_delete=models.cascade) #

文章分類

article_type = models.foreignkey(to='

articletype

',to_field='

id',on_delete=models.cascade) #

文章型別

#type_choice = ( #可以替換上面的class articletype(models.model)

#(1,'python'),

#(2,'openstack'),

#(3,'linux'),#)

#article_type_id = models.integerfield(choices=type_choice) #相當於把錶type_choice放到記憶體裡

views.py

from django.shortcuts import

render

models

def article(request,*args,**kwargs): #

可以取任意數

print(kwargs) #

kwargs== 裡面傳遞了兩個引數

condition = {} #

建立乙個空的字典

for k,v in kwargs.items(): #

k為article_type_id、category_id

kwargs[k] = int(v)

if v == '

0': #

如果字典中的值(value)為0時

pass

else: #

不為0時

condition[k] = v #

把v放入到k中 # k為article_type_id、category_id

#article_type_list = models.articletype.objects.all()

article_type_list = models.articletype.objects.all() #

文章技術語言類列表

category_list = models.category.objects.all() #

分類 result = models.article.objects.filter(**condition) #

按condition內容裡的條件進行查詢

return

render(

request,

'article.html',

) #create your views here.

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>

title

>

<

style

>

.condition a

.condition a.active

style

>

head

>

<

body

>

<

h1>過濾條件

h1>

<

div

class

="condition"

>

<

div>

<

a class

="active"

href

="">全部

a>

<

a href

="">全部

a>

<

a class

="active"

href

="">}

a>

<

a href

="">}

a>

div>

<

div>

<

a class

="active"

href

="">全部

a>

<

a href

="">全部

a>

<

a class

="active"

href

="">}

a>

<

a href

="">}

a>

div>

<

h1>查詢結果

h1>

<

ul>

<

li>}-}

li>

ul>

body

>

html

>

資料庫的表

前端主頁:

django之Form元件補充

自定義驗證規則 方法一 from django.forms import form from django.forms import widgets from django.forms import fields from django.core.validators import regexval...

Django之auth認證元件

此時我們需要實現包括使用者註冊 使用者登入 使用者認證 登出 修改密碼等功能,這還真是個麻煩的事情呢。django作為乙個完美主義者的終極框架,當然也會想到使用者的這些痛點。它內建了強大的使用者認證系統 auth,它預設使用 auth user 表來儲存使用者資料。建立使用者 python mana...

Django之元件 中介軟體

中介軟體是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能 1寫乙個類,繼承middlewaremixin,2在類中寫方法 process request 3 在setti...