分頁
可在settings中設(shè)置默認分頁配置
也可以自定義分頁類
http://127.0.0.1:8000/api/grades/?page=2&limit=6
limit是每頁的最大個數(shù)
有時候我們獲取資源時,需要獲取盡可能多的記錄,這時候可以使用DRF-extensions
pip installdrf-extensions
經(jīng)過反復試驗慰照,均已失敗告終袁滥,而且這個limit=max? 好像也只是取max_page_size 的值,如果真的不分頁建議自己寫個@list_route方法幻馁,方法內(nèi)容直接超list方法即可,去掉里面的分頁功能
權(quán)限認證
authentication_classes
permission_classes
只有管理員才能訪問該接口
過濾搜索
安裝django-filter
pip install django-filter
一定要注意: 安裝的是django-filter? 填寫的app名稱是django_filters
編寫 Filter類
注意:這里type是一對一關(guān)系的屬性,寫法是profile__type (兩個下劃線)
Filter是過濾帕翻,根據(jù)過濾類代碼,可根據(jù)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關(guān)鍵詞可以在setting中設(shè)置
訪問限制
REST_FRAMEWORK 中可設(shè)置默認訪問限制
間隔可設(shè)置為second, minute, hour or day
把user 限制在 10/day 规惰,當訪問第11次的時候報錯
自定義限速
比如設(shè)置為:
意思就是:匿名用戶可以訪問5次睬塌,而登陸用戶采用的ZRC限制,可以訪問8次
還有一種方式是設(shè)置scope
此時在View中可以直接使用:
throttle_scope = uploads