DRF项目(二)view代码的书写

该博客详细介绍了如何使用Django REST Framework创建一个API视图,实现产品列表的展示、筛选、排序和分页功能。通过`ListAPIView`子类`ProductListView`,配置`queryset`、`serializer_class`、`permission_classes`、`filter_backends`、`ordering_fields`、`search_fields`、`pagination_class`等参数,使得前端能够根据多种条件进行动态操作,如按价格排序(`ordering=price`)、搜索关键词(`search='aaa'`)以及自定义分页。同时,指出了前端如何利用这些后端提供的功能进行交互,如通过URL参数控制显示数量和页数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

产品列表

这个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里面的路径

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值