日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Django filter動態過濾與排序實現過程解析

瀏覽:261日期:2024-09-17 13:10:45

前期準備

在虛擬開發環境中安裝:

pip install django-filter

在Django的項目配置文件中安裝并配置django_filters應用:

INSTALLED_APPS = [ ... ’django_filters’,]REST_FRAMEWORK = { # 過濾器默認后端 ’DEFAULT_FILTER_BACKENDS’: ( ’django_filters.rest_framework.DjangoFilterBackend’,),}

快速使用

model.py

class User(models.Model): # 模型字段 name = models.CharField(max_length=10, verbose_name='姓名') sex = models.BooleanField(default=1, verbose_name='性別') age = models.IntegerField(verbose_name='年齡') phone = models.CharField(max_length=20, null=True, verbose_name='電話') addr = models.CharField(max_length=100,null=True,verbose_name='地址') class Meta: db_table = 'tb_user' verbose_name = '用戶' verbose_name_plural = verbose_name

新建filter.py:過濾器類

import django_filtersfrom .models import Userclass UserFilter(django_filters.FilterSet): class Meta: model = User fields = ['name', 'age'] #指定動態過濾的字段,默認精準匹配

注意:

Meta字段說明model: 引用的模型,不是字符串fields:指明過濾字段,可以是列表,列表中字典可以過濾,默認是判等;也可以字典,字典可以自定義操作exclude = [’password’] 排除字段,不允許使用列表中字典進行過濾

view.py

from django_filters.rest_framework import DjangoFilterBackendfrom rest_framework.generics import ListAPIViewfrom rest_framework import filtersclass UserViewSet(ListAPIView): queryset = User.objects.all() #獲取數據 serializer_class = UserModelSerializer #指定序列化類 filter_class = UserFilter # 指定過濾器類

serializers.py

from rest_framework import serializersfrom .models import Userclass UserModelSerializer(serializers.ModelSerializer): class Meta: model = User fields = '__all__'

urls.py

path(’user/’,UserViewSet.as_view()),

首先理解上面是動態過濾,前端在請求頭如下傳遞參數,傳遞參數的個數是不同的,而動態過濾只會過濾:有參數,且參數有值的項。

http://ip:port/user/?name=查找內容&age=查找內容http://ip:port/user/?name=&age=查找內容http://ip:port/user/?name=查找內容&age=http://ip:port/user/?name=&age=http://ip:port/user/

精準過濾、模糊過濾并存

class UserFilter(django_filters.FilterSet): class Meta: model = User # fields = ['name', 'age'] fields = { 'name': [’exact’,’icontains’], 'age': [’exact’], }

exact:默認過濾方式,精確過濾

icontains:模糊過濾

http://ip:port/user/?name=查找內容&name_icontains=查找內容&age=查找內容

范圍過濾

class UserFilter(django_filters.FilterSet): class Meta: model = User # fields = ['name', 'age'] fields = { 'name': [’exact’,’icontains’], 'age': [’exact’,’gte’,’lte’], }

對以上filter來說

name 精確查找name__icontains 模糊查找age 精準查找age__gte 大于等于age__lte 小于等于

排序

class UserFilter(django_filters.FilterSet):#定義排序字段:依賴哪個字段排序 sort = django_filters.OrderingFilter(fields=(’age’,)) class Meta: model = User # fields = ['name', 'age'] fields = { 'name': [’exact’,’icontains’], 'age': [’exact’,’gte’,’lte’], }

url示例

http://ip:port/user/?name=查找內容&sort=age:表示升序http://ip:port/user/?name=查找內容&sort=-age:表示降序

補充知識

這部分可以參考:https://zhuanlan.zhihu.com/p/110060840

過濾器可以自定義字段,開始我們這樣定義過濾字段,以及每個字段是相等運算,模糊匹配,還是范圍查詢,但是這樣的寫法可能不太直觀。

fields = {'name': [’exact’,’icontains’],'age': [’exact’,’gte’,’lte’],}

我們可以做如下類型改變

class BookFilter(filters.FilterSet): btitle = filters.CharFilter(field_name=’title’,lookup_expr=’icontains’) pub_year = filters.CharFilter(field_name=’bpub_date’,lookup_expr=’year’) pub_year__gt = filters.CharFilter(field_name=’bpub_date’,lookup_expr=’year__gt’) bread__gt = filters.NumberFilter(field_name=’bread’,lookup_expr='gt') bread__lt = filters.NumberFilter(field_name=’bread’,lookup_expr='lt') class Meta: model = Bookinfo fields = [’title’,’bread’,’bcomment’]

http://127.0.0.1:8000/book/?title=&bread=&bcomment=&btitle=%E5%B0%84%E9%9B%95&pub_year=&pub_year__gt=&bread__gt=&bread__lt=

過濾器每個字段內部配置:

field_name: 過濾字段名,為對應模型中字段名

lookup_expr: 查詢時所要進行的操作,是等值,范圍、模糊匹配等

過濾器字段類型:

CharFilter 字符串類型BooleanFilter 布爾類型DateTimeFilter 日期時間類型DateFilter 日期類型DateRangeFilter 日期范圍TimeFilter 時間類型NumberFilter 數值類型,對應模型中IntegerField, FloatField, DecimalField

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品首页| 日韩av中文在线观看| 精品伊人久久久| 日韩欧美三级| 日韩天堂av| 综合亚洲色图| 久久99影视| 99久久夜色精品国产亚洲1000部| 在线一区视频| 日韩avvvv在线播放| 麻豆视频久久| 亚洲国产专区校园欧美| 亚洲精品在线a| 日韩88av| 久久精品国产99久久| 日韩欧美中文字幕一区二区三区 | 日韩一区二区三区高清在线观看| 日韩欧美久久| 三级精品视频| 亚洲三级在线| 亚洲永久av| 日本亚洲欧洲无免费码在线| 精品久久网站| av一区二区高清| 日本午夜精品| 国产综合欧美| 久久字幕精品一区| 午夜宅男久久久| 蜜桃传媒麻豆第一区在线观看| 久久99视频| 日韩欧美字幕| 一区二区电影在线观看| 亚洲欧洲日本mm| 日本不卡视频在线观看| 亚洲综合丁香| 免费视频久久| 亚洲综合福利| 日韩1区2区日韩1区2区| 免费一级欧美在线观看视频| 久久久久久一区二区| 欧美午夜网站| 黄色aa久久| 亚洲黄色网址| 麻豆国产精品视频| 久久一区视频| 狠狠爱www人成狠狠爱综合网| 国产剧情在线观看一区| 国产精品毛片一区二区三区| 97视频热人人精品免费| 国产欧美在线| 亚洲视频国产| 欧美久久精品| 欧美精品一线| 国产视频一区三区| 日韩制服丝袜av| 香蕉久久99| 精品一区电影| 91嫩草精品| 老司机精品久久| 国产伦久视频在线观看| 久久99久久久精品欧美| 日韩黄色免费网站| 石原莉奈一区二区三区在线观看| 99久久99视频只有精品| 国产乱码午夜在线视频| 丝袜国产日韩另类美女| 狠狠色狠狠色综合日日tαg| 亚洲www啪成人一区二区| 97精品97| 国产欧美一区二区色老头| 日本视频中文字幕一区二区三区| 最新国产精品视频| 日本在线不卡视频| 国产亚洲毛片| av不卡在线看| 亚洲精品1区| 国产精品毛片aⅴ一区二区三区| 欧美日韩精品一区二区三区视频 | 亚洲资源网站| 男人的天堂久久精品| 亚洲精品**中文毛片| 久久男人av| 欧美国产另类| 麻豆视频久久| 精品国产免费人成网站| 日韩在线观看| 久久久久午夜电影| 亚洲国产日韩欧美在线| 999国产精品视频| 久久久精品网| 亚洲福利免费| 亚洲欧洲午夜| 亚洲欧美专区| 91麻豆精品激情在线观看最新 | 一区二区国产在线观看| 综合激情网...| 日韩二区在线观看| 免费亚洲婷婷| 福利欧美精品在线| 久久精品国产亚洲夜色av网站| 99精品综合| 红桃视频国产一区| 亚洲欧美在线综合| 国产欧美日韩免费观看| 成人在线视频区| 成人久久久久| 樱桃视频成人在线观看| 欧洲毛片在线视频免费观看| 蜜桃视频在线观看一区| 日韩专区在线视频| 国产午夜一区| 狠狠躁少妇一区二区三区| 欧美有码在线| 婷婷精品视频| 激情婷婷欧美| 蜜桃视频欧美| 亚洲国产成人精品女人| 99在线|亚洲一区二区| 午夜av一区| 在线亚洲欧美| 免费在线观看一区二区三区| 在线免费观看亚洲| 亚洲九九精品| 日韩精品免费观看视频| 亚洲免费观看高清完整版在线观| 中文字幕高清在线播放| 伊人影院久久| 91精品婷婷色在线观看| 99精品视频在线| 欧美a级一区| 激情91久久| 免费观看在线综合| 日本成人在线不卡视频| 欧美在线首页| 国产精品一区二区av日韩在线| 国产激情一区| 精品视频99| 欧美日韩在线观看首页| 米奇777超碰欧美日韩亚洲| 久久人人97超碰国产公开结果| 久久网站免费观看| 免播放器亚洲| 日韩精品免费视频人成| 久久只有精品| 日韩精品91| av一区二区高清| 午夜久久av | 国产欧美成人| 国产一区二区精品福利地址| 久久精品三级| 欧美羞羞视频| 合欧美一区二区三区| 亚洲欧美网站在线观看| 久久av免费看| 成人羞羞视频播放网站| 免费国产自线拍一欧美视频| 日本国产亚洲| 精品中文字幕一区二区三区 | 欧美激情视频一区二区三区免费| 日本黄色精品| 亚洲国产成人精品女人| 亚洲另类黄色| 麻豆精品在线观看| 精品一区三区| 91精品国产自产在线丝袜啪| 国产一区二区三区成人欧美日韩在线观看 | 日韩视频在线一区二区三区 | 久久精品免费一区二区三区| 水野朝阳av一区二区三区| 国产精品久久久久久久免费软件| 三上悠亚国产精品一区二区三区 | 欧美99久久| 欧美一级二区| 亚洲性色视频| 久久精品超碰| 极品日韩av| 国产精品网址| 偷拍欧美精品| 国产欧美69| 午夜欧美视频| 国产精品v一区二区三区| 韩国三级一区| 少妇精品久久久一区二区| 精品国产不卡| 韩国精品主播一区二区在线观看| 久久国产精品99国产| 国产乱子精品一区二区在线观看| 国产精品久久久久蜜臀 | 97精品久久| 国产一区二区三区亚洲| 一区二区三区网站| 中文字幕成在线观看| 久久久久久久久丰满| 亚洲欧美久久精品| 蜜桃精品在线| 国产乱子精品一区二区在线观看 | 久久九九精品| 国产精品theporn| 免费在线观看视频一区| 久久九九电影|