class Car(models.Model):
name = models.CharField(max_length=16, unique=True, verbose_name='车名')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='价格')
brand = models.CharField(max_length=16, verbose_name='品牌')
class Meta:
db_table = 'api_car'
verbose_name = '汽车表'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 2.
from . import models
admin.site.register(models.Car)
#3.
class CarModelSerializer(serializers.ModelSerializer):
class Meta:
model = models.Car
fields = ['name', 'price', 'brand']
#4.
# Car的群查接口
from rest_framework.generics import ListAPIView
class CarListAPIView(ListAPIView):
queryset = models.Car.objects.all()
serializer_class = serializers.CarModelSerializer
#5.
url(r'^cars/$', views.CarListAPIView.as_view()),
from rest_framework.generics Import ListAPIView # Step: drf of SearchFilter - search filters from rest_framework.filters Import searchfilter class CarListAPIView (ListAPIView): QuerySet = models.Car.objects.all () serializer_class = serializers.CarModelSerializer # Step two: filter classes are local configuration (using global configuration DEFAULT_FILTER_BACKENDS) filter_backends = [searchfilter] # step: searchFilter class dependent filter filters => Interface:? / cars / Search = ... search_fields = [ ' name ' , ' . price ' ] # EG:? / Cars / Search = 1, name and price data will be included in the query 1 is out
from rest_framework.generics Import ListAPIView # Step: The DRF OrderingFilter - sorting filter from rest_framework.filters Import OrderingFilter class CarListAPIView (ListAPIView): QuerySet = models.Car.objects.all () serializer_class = serializers.CarModelSerializer # Step: filter classes are local configuration (using global configuration DEFAULT_FILTER_BACKENDS) filter_backends = [OrderingFilter] # step: OrderingFilter class dependent filter filters => Interface:? / cars / Ordering = ... ordering_fields = [ ' PK ' , ' . price '] # EG: / cars / Ordering = -Price, pk, first by descending price, if the same price, then pk appear in ascending order?
from rest_framework.pagination Import PageNumberPagination
class MyPageNumberPagination (PageNumberPagination):
# ? Page = Page
page_query_param = ' Page '
# Page = default page number of a displayed?
PAGE_SIZE = 3 # Page = page & page_size = the Number of User-defined? Article display a number
page_size_query_param = ' PAGE_SIZE ' # user defined maximum limit for a number of display: display only values exceeding 5 5
max_page_size = 5
# 2.cbv
from rest_framework.generics import ListAPIView
# 导入自定义的分页器
from . import pagenations
class CarListAPIView(ListAPIView):
# 如果queryset没有过滤条件,就必须 .all(),不然分页会出问题
queryset = models.Car.objects.all()
serializer_class = serializers.CarModelSerializer
# 分页组件 - 给视图类配置分页类即可 - 分页类需要自定义,继承drf提供的分页类即可
pagination_class = pagenations.MyPageNumberPagination