分页
可在settings中设置默认分页配置
也可以自定义分页类
http://127.0.0.1:8000/api/grades/?page=2&limit=6
limit是每页的最大个数
有时候我们获取资源时,需要获取尽可能多的记录,这时候可以使用DRF-extensions
pip installdrf-extensions
经过反复试验,均已失败告终,而且这个limit=max 好像也只是取max_page_size 的值,如果真的不分页建议自己写个@list_route方法,方法内容直接超list方法即可,去掉里面的分页功能
权限认证
authentication_classes
permission_classes
只有管理员才能访问该接口
过滤搜索
安装django-filter
pip install django-filter
一定要注意: 安装的是django-filter 填写的app名称是django_filters
编写 Filter类
注意:这里type是一对一关系的属性,写法是profile__type (两个下划线)
Filter是过滤,根据过滤类代码,可根据name/type来进行过滤
http://127.0.0.1:8000/api/grades/?name=高四&type=2
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. 正则匹配
排序
排序很简单,只需要一句话
http://127.0.0.1:8000/api/grades/?search=zhaor&sort=-name
sort=name 正序,sort=-name 倒叙。
Sort关键词可以在setting中设置
访问限制
REST_FRAMEWORK 中可设置默认访问限制
间隔可设置为second, minute, hour or day
把user 限制在 10/day ,当访问第11次的时候报错
自定义限速
比如设置为:
意思就是:匿名用户可以访问5次,而登陆用户采用的ZRC限制,可以访问8次
还有一种方式是设置scope
此时在View中可以直接使用:
throttle_scope = uploads
网友评论