第一步
# 安裝 'django_filters','rest_framework', pip3 install django_filters pip3 install rest_framework
rest_framework與django_filters使用不在贅述,請參照Django REST Framework教程:快速入門 Rest-framework快速實現增刪改查及篩選
第二步
在setting中配置INSTALLED_APPS 切記
setting加入配置
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES':[ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ], 'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination', # 'PAGE_SIZE':3 (可先註釋,加頁碼會用到) }
第三步
在應用目錄下創建 query_filter.py 與 serializers.py文件
# Author:jum # -*- coding: utf-8 -*- # @Time : 2020-03-10 9:20 # @File : query_filter.py # @Software: PyCharm """篩選條件""" # fields中爲可篩選字段
# 切記圖片字段不可加入篩選字段
from django_filters import rest_framework as filters from apps.user_blog.models import * class BussFilter(filters.FilterSet): class Meta: model = Buss fields = ['id', 'name'] class GoodsFilter(filters.FilterSet): class Meta: model = Goods fields = ['id', 'buss_cate',]
# Author:jum # -*- coding: utf-8 -*- # @Time : 2020-03-09 14:22 # @File : serializers.py # @Software: PyCharm # 用於返回json數據 # fields 中設置你將展示的字段 from rest_framework import serializers from apps.user_blog.models import * class StudentSerializers(serializers.ModelSerializer): class Meta: model = User # 指定的模型類 fields = ('name', 'job_num') # 需要序列化的屬性 class BussSerializers(serializers.ModelSerializer): class Meta: model = Buss # 指定的模型類 fields = ('id', 'name', 'pwd', 'weight', 'create_time', 'update_time') # 需要序列化的屬性 class GoodsSerializers(serializers.ModelSerializer): class Meta: model = Goods # 指定的模型類 fields = ('id', 'buss_cate', 'name', 'tp', 'price', 'buys_count', 'weight', 'create_time')
第四步:
配置url,填充view
#view.py from django.shortcuts import render from rest_framework import viewsets from apps.user_blog.models import * from .serializers import StudentSerializers, BussSerializers,GoodsSerializers from .query_filter import BussFilter,GoodsFilter from django_filters import rest_framework as filters # Create your views here. class StudentViewSet(viewsets.ModelViewSet): # 指定結果集並設置排序 # queryset 爲查詢集,可自定義 queryset = User.objects.all() # 指定序列化的類 serializer_class = StudentSerializers class BussViewSet(viewsets.ModelViewSet): # 指定結果集並設置排序 # queryset 爲查詢集,可自定義 queryset = Buss.objects.all() # 查詢出所有商家 # 指定序列化的類 serializer_class = BussSerializers #加入篩選字段 filter_backends = (filters.DjangoFilterBackend,) filter_class = BussFilter class GoodsViewSet(viewsets.ModelViewSet): # 指定結果集並設置排序 # queryset 爲查詢集,可自定義 queryset = GoodsSerializers.objects.all() # 查詢出所有商家 # 指定序列化的類 serializer_class = GoodsSerializers filter_backends = (filters.DjangoFilterBackend,) filter_class = GoodsFilter # Create your views here.
#url.py from django.conf.urls import include, url from rest_framework import routers from . import views # 定義路由地址 route = routers.DefaultRouter() # 註冊新的路由地址 route.register(r'user', views.StudentViewSet) route.register(r'buss', views.BussViewSet) route.register(r'goods', views.GoodsViewSet) # 註冊上一級的路由地址並添加 urlpatterns = [ url(r'^', include(route.urls)), ]
最後,如過項目發佈後沒有靜態文件 以Nginx爲例
爲rest_framework添加靜態文件指向
location /static/rest_framework/ { alias /usr/local/lib/python3.5/distpackages/rest_framework/static/rest_framework/;}
ps:分享不宜,此文對您有幫助或喜歡請點贊,不喜勿噴...