django rest framework使用django-filter用法
django rest framework使用django-filter注意事項(xiàng):
一定要在setting文件里面加載如下代碼,而不是只安裝包,否則django應(yīng)用不報(bào)錯(cuò),但是不能正確過濾。
“` INSTALLED_APPS = [ ‘django_filters' ] REST_FRAMEWORK = { ‘DEFAULT_FILTER_BACKENDS': ( ‘django_filters.rest_framework.DjangoFilterBackend', ), }
補(bǔ)充知識(shí):rest_framework--filters和django-filters混合使用-過濾搜索
view
from rest_framework.pagination import PageNumberPagination from rest_framework import mixins from rest_framework import viewsets from rest_framework import filters from django_filters.rest_framework import DjangoFilterBackend from .models import Goods from .serializers import GoodsSerializer # 導(dǎo)入過濾器類 from .filters import GoodsFilter class GoodsPagination(PageNumberPagination): page_size = 10 page_size_query_param = "page_size" page_query_param = "p" max_page_size = 100 class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): # 指定queryset queryset = Goods.objects.all() # 指定序列化類 serializer_class = GoodsSerializer # 指定分頁類 pagination_class = GoodsPagination # 添加過濾器 這里可以吧django-filter過濾器添加進(jìn)來 和 rest_framework的filters添加進(jìn)來一起用, 也可以單個(gè)用, 看你的需求 filter_backends = [DjangoFilterBackend, filters.SearchFilter] # 只需要簡(jiǎn)單的基于等同的過濾,則可以filter_fields在視圖或視圖集上設(shè)置屬性,列出要過濾的字段集。 # 等同就是根據(jù)你過濾的字段的數(shù)據(jù)必須跟數(shù)據(jù)庫里那個(gè)字段的數(shù)據(jù)相同 # filter_fields = ['name', 'shop_price'] # 指定過濾器類 filter_class = GoodsFilter search_fields = ['name', 'goods_brief', "goods_desc"]
過濾器類–根據(jù)自己需求定義
import django_filters from .models import Goods class GoodsFilter(django_filters.rest_framework.FilterSet): """ 商品的過濾類 """ # 大于這個(gè)值 name指定字段 lookup_expr過濾條件 # NumberFilter 數(shù)字類型 price_min = django_filters.NumberFilter(name="shop_price", lookup_expr="gte") # 小于這個(gè)值 price_max = django_filters.NumberFilter(name="shop_price", lookup_expr="lte") # name模糊查詢, 不指定過濾條件, 必須全部匹配 # CharFilter字符串類型 name = django_filters.CharFilter(name="name", lookup_expr="icontains") class Meta: # 指定模型類 model = Goods # 顯示這兩個(gè)字段 fields = ["price_min", "price_max", "name"]
settings
INSTALLED_APPS = [ # drf過濾器 也 是xadmin的過濾器 'django_filters', 'rest_framework', ]
url
from django.conf.urls import url, include from rest_framework.routers import DefaultRouter from goods.views import GoodsListViewSet # 生成一個(gè)注冊(cè)器實(shí)例對(duì)象 router = DefaultRouter() # 將需要自動(dòng)生成url的接口注冊(cè) # 配置goods的url router.register(r'goods', GoodsListViewSet, base_name="goods-list") urlpatterns = [ # 自動(dòng)生成url url(r"^", include(router.urls)), ]
效果圖
以上這篇django rest framework使用django-filter用法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Django restframework 框架認(rèn)證、權(quán)限、限流用法示例
- DjangoRestFramework 使用 simpleJWT 登陸認(rèn)證完整記錄
- Django rest framework如何自定義用戶表
- 深度解析Django REST Framework 批量操作
- Python3+PyCharm+Django+Django REST framework配置與簡(jiǎn)單開發(fā)教程
- Django REST Framework 分頁(Pagination)詳解
- Django restful framework生成API文檔過程詳解
- 自定義Django_rest_framework_jwt登陸錯(cuò)誤返回的解決
- django restframework serializer 增加自定義字段操作
- Django REST framework 限流功能的使用
相關(guān)文章
跟老齊學(xué)Python之?dāng)?shù)據(jù)類型總結(jié)
前面已經(jīng)洋洋灑灑地介紹了不少數(shù)據(jù)類型。不能再不顧一切地向前沖了,應(yīng)當(dāng)總結(jié)一下。這樣讓看官能夠從總體上對(duì)這些數(shù)據(jù)類型有所了解,如果能夠有一覽眾山小的感覺,就太好了。2014-09-09python模塊之sys模塊和序列化模塊(實(shí)例講解)
下面小編就為大家?guī)硪黄猵ython模塊之sys模塊和序列化模塊(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Python中threading模塊join函數(shù)用法實(shí)例分析
這篇文章主要介紹了Python中threading模塊join函數(shù)用法,以實(shí)例形式較為詳細(xì)的分析了join函數(shù)的功能與使用方法,需要的朋友可以參考下2015-06-06簡(jiǎn)單易懂Pytorch實(shí)戰(zhàn)實(shí)例VGG深度網(wǎng)絡(luò)
這篇文章主要介紹了簡(jiǎn)單易懂Pytorch實(shí)戰(zhàn)實(shí)例VGG深度網(wǎng)絡(luò),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08