Django Rest Framework 电商项目 5-11 DRF的搜索和排序

继续进行配置,看DRF的文档。搜索功能使用SearchFilter来完成,这是做模糊查询最佳的Filter。

在views.py中,首先引入:

from rest_framework import filters

在filter_backends中增加一个filters.SearchFilter参数:

filter_backends = (DjangoFilterBackend, filters.SearchFilter)

再配置搜索字段:

search_fields = ('name', 'goods_brief', 'goods_desc')

其实字段的配置是很灵活的,继续看文档,他告诉了我们一些正则表达式的写法:

  • '^' Starts-with search.
  • '=' Exact matches.
  • '@' Full-text search. (Currently only supported Django's MySQL backend.)
  • '$' Regex search.

我们可以来简单的使用一个,在search_fields 的参数中的‘name’前加一个^,搜索以name的值开头的数据。再改成=,试用一下。要注意的是,对每个字段都要做处理,这样才能完成对不同字段的不同级别的搜索。最后请取消添加的东西,回到最初。启动项目,查看效果。

然后是排序,看官方文档的OrderingFilter

同样是在filter_backends中增加一个参数,叫filters.OrderingFilter,即filter_backends改为:

filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter,)

依然是配置一个fields,叫ordering_fields:

ordering_fields = ('sold_num', 'add_time')

启动项目,查看效果。

最后读者请看一下三种filter的配置,做一个总结(关于字段的过滤可以用filter_field在View中配置,但我们采用了更高级的方法)。

上一篇:django用它自带的验证模块登陆


下一篇:django 数据库配置