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 PageNumberPaginationfrom rest_framework import mixinsfrom rest_framework import viewsetsfrom rest_framework import filtersfrom django_filters.rest_framework import DjangoFilterBackendfrom .models import Goodsfrom .serializers import GoodsSerializer# 導(dǎo)入過濾器類from .filters import GoodsFilterclass GoodsPagination(PageNumberPagination): page_size = 10 page_size_query_param = 'page_size' page_query_param = 'p' max_page_size = 100class 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] # 只需要簡單的基于等同的過濾,則可以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_filtersfrom .models import Goodsclass 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, includefrom rest_framework.routers import DefaultRouterfrom goods.views import GoodsListViewSet# 生成一個(gè)注冊器實(shí)例對象router = DefaultRouter()# 將需要自動(dòng)生成url的接口注冊# 配置goods的urlrouter.register(r’goods’, GoodsListViewSet, base_name='goods-list')urlpatterns = [ # 自動(dòng)生成url url(r'^', include(router.urls)),]
效果圖
以上這篇django rest framework使用django-filter用法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 輕松學(xué)習(xí)XML教程2. ASP腳本組件實(shí)現(xiàn)服務(wù)器重啟3. JSP的Cookie在登錄中的使用4. XML入門精解之結(jié)構(gòu)與語法5. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera6. 秒殺場景的緩存、隊(duì)列、鎖使用Redis優(yōu)化設(shè)計(jì)方案7. jsp文件下載功能實(shí)現(xiàn)代碼8. ASP基礎(chǔ)知識(shí)Command對象講解9. ASP中格式化時(shí)間短日期補(bǔ)0變兩位長日期的方法10. Xml簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
