django-restful:filters學(xué)習(xí)筆記

django-filters 使用了 DjangoFilterBackend
文檔地址:http://www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend
處理一些過(guò)濾搜索 例如價(jià)格的區(qū)間搜索
我們?cè)赼pp中建一個(gè)filters.py文件 來(lái)寫

from django_filters import rest_framework as filters
from .models import Goods


class GoodsFilter(filters.FilterSet):
    """
    商品的過(guò)濾類
    """
    # gte 大于等于  lte小于等于
    price_min = filters.NumberFilter(name="shop_price", lookup_expr='gte')
    price_max = filters.NumberFilter(name="shop_price", lookup_expr='lte')
    # name = filters.CharFilter(name='name', lookup_expr='icontains')

    class Meta:
        model = Goods
        fields = ['price_min', 'price_max']  #這里前端就可以在url中加上這個(gè)進(jìn)行過(guò)濾

然后就是在view中配置

class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet):
    """
    商品列表頁(yè)骡尽,分頁(yè)艰亮,搜索,過(guò)濾逻杖,排序
    """
    queryset = Goods.objects.all()
    serializer_class = GoodsSerializer
    pagination_class = GoodsPagination
    filter_backends = (DjangoFilterBackend,)
    filter_class = GoodsFilter

只需要這樣簡(jiǎn)單的配置 就可以實(shí)現(xiàn)價(jià)格區(qū)間的控制進(jìn)行搜索
然后就是上面的分頁(yè)

class GoodsPagination(PageNumberPagination):
   """
   定制分頁(yè) 更加靈活 前端可以自定義分頁(yè)大小
   """
   page_size = 10
   page_size_query_param = 'page_size'  #每個(gè)的顯示個(gè)數(shù)
   page_query_param = "p"  #來(lái)表示每頁(yè)的頁(yè)數(shù)
   max_page_size = 100

然后就是上面name的模糊搜索 和 排序
用到是serachFiled 和 OrderingFilter

from rest_framework import filters
class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet):
   queryset = Goods.objects.all()
   serializer_class = GoodsSerializer
   pagination_class = GoodsPagination
   filter_backends = (DjangoFilterBackend,filters.SearchFilter,filters.OrderingFilter,)
   filter_class = GoodsFilter
   search_fields = ('name','goods_brief', 'goods_desc')  #這里寫上可以進(jìn)行模糊查詢的字段 
   ordering_fields = ('shop_price', 'sold_num','click_num') #這里是進(jìn)行排序的字段

search_fields 還支持很多方法 例如


    '^' Starts-with search.  # 以xx開(kāi)頭的
    '=' Exact matches.  #必須完全相等的
    '@' Full-text search. (Currently only supported Django's MySQL backend.)  #全局搜索 mysql必須支持
    '$' Regex search.  #正則搜索

這里基本都寫完了 后面我在寫寫 Serializer
本來(lái)是前面學(xué)的 但是忘了寫 現(xiàn)在來(lái)補(bǔ)補(bǔ)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茄靠,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝶桶,死亡現(xiàn)場(chǎng)離奇詭異慨绳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)真竖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門脐雪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人恢共,你說(shuō)我怎么就攤上這事战秋。” “怎么了讨韭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵脂信,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我透硝,道長(zhǎng)狰闪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任濒生,我火速辦了婚禮埋泵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘罪治。我一直安慰自己丽声,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布觉义。 她就那樣靜靜地躺著雁社,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晒骇。 梳的紋絲不亂的頭發(fā)上霉撵,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天滋饲,我揣著相機(jī)與錄音,去河邊找鬼喊巍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛箍鼓,可吹牛的內(nèi)容都是我干的崭参。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼款咖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼何暮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铐殃,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤海洼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后富腊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體坏逢,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年赘被,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了是整。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡民假,死狀恐怖浮入,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羊异,我是刑警寧澤事秀,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站野舶,受9級(jí)特大地震影響易迹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜平道,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一赴蝇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巢掺,春花似錦句伶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至轧苫,卻和暖如春楚堤,著一層夾襖步出監(jiān)牢的瞬間疫蔓,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工身冬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衅胀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓酥筝,卻偏偏與公主長(zhǎng)得像滚躯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘿歌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容