产品列表

这个api路径,可以实现的功能是:筛选,分页,列表全部数据,搜索
一个api路径,后面的参数是不一样的,所以功能是不一样的

数据库里面有数据了,我们就可以和前端进行联系,先做一个产品列表
在view里面先将数据库数据拿出来

最好是每一个功能有一个api路径,这样是好查看,这个列表功能是将产品的全部的数据拿出来,返回给前端
还可以筛选和查数据功能,这个只需要在列表view里面加代码就可以。

#父类ListAPIView是只有列表功能,如果父类变为ListCreateAPIView,那么既可以看列表,也可以改列表
这个类名字是根据这个类作用起的名字。继承父类可以根据需求,现在是只是显示列表,所以直接继承这个就可以了。

class ProductListView(generics.ListAPIView):
    '''产品列表'''
将数据库里面的数据都取出来,
    queryset=Product.objects.all()
数据库对象的字段有很多,那么哪些字段要显示在前端呢?就是在序列化里面进行设置
    serializer_class=ProductListSerializer
    # 以下代码就是表示 谁都可以看这个列表 默认就是这个,不写也可以
    permissin_classes=(permissions.AllowAny,)
    #写上这个字段 就是可以在前段显示一个排序 的按钮,你可以选择按照一些条件进行排序,还有搜索的按钮
也就是写了这个时候,前端可以根据产品的全部的字段进行升序和降序进行排序,还可以根据全部的字段进行搜索
    filter_backends = (OrderingFilter,SearchFilter)
    # 排序的字段,也就是我们可以按照哪些字段进行排序
    ordering_fields=('category','manufacturer','created','sold',)
    # 搜索的字段 设置按照哪些字段进行搜索
    search_fields=('description','model')
    ordering=('id',)
    # 分页进行显示的,只要写这个,前端就可以自定义显示的条数和第几页
    pagination_class = LimitOffsetPagination
  filter_backends = (OrderingFilter,SearchFilter)

只要后端写了这个,前端就可以根据全部的字段进行排序,搜索,比如格式是这样的
ordering是特定的,名字就是这样,记住。后面是要根据哪个字段进行排序ordering=price是升序,ordering=-price降序
http://127.0.0.1:8000/computer/product_list/?ordering=price

后端定义前端可以使用的字段,这些要告诉前端
ordering_fields=('category','manufacturer','created','sold',)
后端定义前端可以使用的字段,这些要告诉前端,前端就可以根据这些字段进行搜索
search_fields=('description','model')
http://127.0.0.1:8000/computer/product_list/?search='aaa'

我们需要在前段让用户进行设置,到底一页显示多少个数据,还有就是用户查看对应页数的数据。这个时候我们需要在 后端加一句话

分页进行显示的

pagination_class = LimitOffsetPagination

在view里面加了这句话,那么前段我们看到页面的url就变为
http://127.0.0.1:8000/computer/product_list/?limit=2&offset=5
本来是没有问号后面的参数的,但是加了这个代码,前段就可以根据问号后面的参数进行选择一页显示多少数据,还有就是要看第几页的数据 limit参数是一页显示多少个数据 offset是第几页的数据。

所以前段里面ajax的路径就是现在的url里面的路径

后端传到前段的有对应的前一页和后一页的连接,就可以在前段将这些字段取出来,放到对应的位置就可以了