Rest Framework第五天-版本控制、響應器和渲染器、分頁
頻率: 自定義: 1 定義一個類MyThrottles allow_request(頻率限制的邏輯) wait(返回一個數字,給使用者提示,還差多少秒) 2 區域性使用:throttle_classes=[MyThrottles,] 3 全域性使用:'DEFAULT_THROTTLE_CLASSES':['utils.common.MyThrottles',], 用內建的:(可以控制ip,和userid) 1 寫一個類,繼承SimpleRateThrottle 屬性:scope = 'xxx' 重寫方法:get_cache_key 去setting裡配置:'DEFAULT_THROTTLE_RATES':{ # 'xxx':'5/m', 'xxx':'5/m', } 2 區域性使用:throttle_classes=[MyThrottles,] 3 全域性使用:'DEFAULT_THROTTLE_CLASSES':['utils.common.MyThrottles',], 補充: 認證,想區域性取消(禁用) authentication_classes=[] 版本控制: 1 127.0.0.1/course/?version=v100000 用from rest_framework.versioning import QueryParameterVersioning 在檢視類裡: versioning_class=QueryParameterVersioning(**不再是列表) 在setting裡配置: REST_FRAMEWORK={ 'VERSION_PARAM':'version', 'DEFAULT_VERSION':'v2', 'ALLOWED_VERSIONS':['v1','v2'] } 取: 檢視類裡: request.version 127.0.0.1/v1/course/ 用from rest_framework.versioning import URLPathVersioning 在檢視類裡: versioning_class=URLPathVersioning(**不再是列表) 在setting裡配置: REST_FRAMEWORK={ 'VERSION_PARAM':'version', 'DEFAULT_VERSION':'v2', 'ALLOWED_VERSIONS':['v1','v2'] } 取: 檢視類裡: request.version
3 反向解析(瞭解) 響應器: 以後專案中用:(返回的格式,只是json格式) REST_FRAMEWORK={ 'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer',], } 補充一點: 查詢模板的時候:先從自己app裡找,找不取專案,再找不到,取各個app裡找 分頁: 1 簡單分頁 127.0.0.1/course/page=3 PageNumberPagination #每頁顯示多少條api_settings.PAGE_SIZE #page_size = #查詢指定頁碼的引數 #page_query_param = 'page' #指定每頁顯示條數 #page_size_query_param = None #限制每頁顯示最大條數 #max_page_size = None 2 偏移分頁 127.0.0.1/course/offset=10&limit=5 LimitOffsetPagination # default_limit:預設顯示多少條 # max_limit:最大顯示多少條 # limit_query_param:重新命名limit(limit=4:表明顯示四條,受max_limit的限制) # offset_query_param:指定查詢的標杆名(offset=1:表明從第二條開始,往後偏移) 3 加密分頁 後臺返回的url:127.0.0.1/course/page=dfgeg CursorPagination cursor_query_param = 'cursor':查詢的名字 page_size = api_settings.PAGE_SIZE:每頁顯示的條數 ordering = '-created' :按誰排序 補充:(1)修改資料屬性的方式: 1 再setting裡配置每頁條數 2 寫一個類,繼承它,屬性重寫 3 再物件裡修改 (2)my_page.get_paginated_response(ser.data) # 對Response做了封裝,返回內容裡有總條數,上一頁,下一頁的連結 自己封裝response物件 。。。。