这个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里面的路径
后端传到前段的有对应的前一页和后一页的连接,就可以在前段将这些字段取出来,放到对应的位置就可以了