第五章 DRF权限分页查询排序访问限制

分页

可在settings中设置默认分页配置

第五章 DRF权限分页查询排序访问限制_第1张图片

也可以自定义分页类

第五章 DRF权限分页查询排序访问限制_第2张图片

http://127.0.0.1:8000/api/grades/?page=2&limit=6

limit是每页的最大个数

第五章 DRF权限分页查询排序访问限制_第3张图片

有时候我们获取资源时,需要获取尽可能多的记录,这时候可以使用DRF-extensions

pip installdrf-extensions

第五章 DRF权限分页查询排序访问限制_第4张图片

经过反复试验,均已失败告终,而且这个limit=max  好像也只是取max_page_size 的值,如果真的不分页建议自己写个@list_route方法,方法内容直接超list方法即可,去掉里面的分页功能

权限认证

authentication_classes

permission_classes

第五章 DRF权限分页查询排序访问限制_第5张图片

只有管理员才能访问该接口

第五章 DRF权限分页查询排序访问限制_第6张图片
第五章 DRF权限分页查询排序访问限制_第7张图片

过滤搜索

安装django-filter

pip install django-filter

第五章 DRF权限分页查询排序访问限制_第8张图片
第五章 DRF权限分页查询排序访问限制_第9张图片

一定要注意: 安装的是django-filter  填写的app名称是django_filters

编写 Filter类

第五章 DRF权限分页查询排序访问限制_第10张图片

注意:这里type是一对一关系的属性,写法是profile__type (两个下划线)

第五章 DRF权限分页查询排序访问限制_第11张图片

Filter是过滤,根据过滤类代码,可根据name/type来进行过滤

第五章 DRF权限分页查询排序访问限制_第12张图片

http://127.0.0.1:8000/api/grades/?name=高四&type=2

第五章 DRF权限分页查询排序访问限制_第13张图片

Search

search_fields = ('name', 'profile__email')

search_fields = ('^name', 'profile__email')

默认的为模糊匹配

http://127.0.0.1:8000/api/grades/?search=zhaor

'^' Starts-with search.    开头

'=' Exact matches.       完全匹配

'@' Full-text search. (Currently onlysupported Django's MySQL backend.)   全文搜索

'$' Regex search.           正则匹配

第五章 DRF权限分页查询排序访问限制_第14张图片

排序

排序很简单,只需要一句话

第五章 DRF权限分页查询排序访问限制_第15张图片

http://127.0.0.1:8000/api/grades/?search=zhaor&sort=-name

sort=name 正序,sort=-name 倒叙。

Sort关键词可以在setting中设置

访问限制

REST_FRAMEWORK 中可设置默认访问限制

第五章 DRF权限分页查询排序访问限制_第16张图片

间隔可设置为second, minute, hour or day

把user 限制在 10/day ,当访问第11次的时候报错

第五章 DRF权限分页查询排序访问限制_第17张图片
第五章 DRF权限分页查询排序访问限制_第18张图片

自定义限速

第五章 DRF权限分页查询排序访问限制_第19张图片

比如设置为:

第五章 DRF权限分页查询排序访问限制_第20张图片

意思就是:匿名用户可以访问5次,而登陆用户采用的ZRC限制,可以访问8次

还有一种方式是设置scope

第五章 DRF权限分页查询排序访问限制_第21张图片

此时在View中可以直接使用:

throttle_scope = uploads

第一章 DRF概述

第二章 DRF安装与项目创建

第三章 DRF之View进化论

第四章 DRF之Router 和 Serializer

第五章 DRF权限分页查询排序访问限制

第六章 DRF Linux部署

第七章 DRF其他知识

你可能感兴趣的:(第五章 DRF权限分页查询排序访问限制)