電流制限機能のために
実装フレームワーク制限機能は、配置が部分集合とグローバル設定に分け、およびクラスの設定を継承するカスタムクラスを設定して、カプセル化された制限のクラスに依存します。もしあなたがDEAFULRT_THROTTLE_CLASSESとDEAFULRT_THROTTLE_RATESを設定しなければならない機能を制限することを目標
(A)、グローバル設定の実現
。1 - settings.py
2 REST_FRAMEWORK = {
3。
4 'DEFAULT_THROTTLE_CLASSES' :[
5 'rest_framework.throttling.AnonRateThrottle' 、 6#制限匿名ユーザー 7 'rest_framework.throttling.UserRateThrottle' 。8リストリクタは、登録済みのユーザ# 9 } 10 。11 'DEFAULT_THROTTLE_RATES' :{12である'アノン': '2 /分' 、13#匿名ユーザーが分訪問ごとに制限している5 14 'ユーザ':5 '/分' 、15#は、登録済みのユーザ分の訪問ごとに制限16から15 } 17 - 18は、全体クラスが実装が閉じ込められるviews.py#ストリーム機能19 Demo5APIView(APIView):#20は、DEF 21は、グローバル設定ビュークラスで動作することが要求されていない投票#22である:GET(セルフ、要求) 23ページの戻り応答(「これは、投票ページです」)24 -urls.py 25 urlpatterns = [26パス( 'DEMO7 /' 、views.Demo7APIView.as_view())、27]
(B)の部分集合を達成するために
。1. 1 - settings.py
2 REST_FRAMEWORK = {
3 'DEFAULT_THROTTLE_RATES' :{
4 'アノン' '2 /分' 、 毎分5回へのアクセスを制限する5人の#匿名ユーザー 6 'ユーザ':5 '/分] 、 7位、毎分15回のアクセスを制限するユーザ登録 8 } 9 - } 10 機能12を限定実施views.py 11#ローカルクラス電流が= 13 throttle_classesある:Demo6APIView(APIView)[UserRateThrottle、AnonRateThrottle]#14部分集合必要性の観点からDEF 15のリストを設定する関数を書いてGET(セルフ、reqeust):16リターン応答(「ローカルテスト制限機能を」)17 - 。urls.py 18はurlpatterns =である[パス19(「demo6 /。 ' 、views.Demo6APIView.as_view())、20]であります
(C)、カスタム達成するための機能を制限します
。1 - settings.py
2 'DEFAULT_THROTTLE_CLASSES' :
3 'rest_framework.throttling.ScopedRateThrottle' 、
クラスを使用するカスタム必要性を制限する4#
5 ]、 6 。7 'DEFAULT_THROTTLE_RATES' :{ 8 'コンタクト':5」/。時間' 定義されたレートから、9#リストリクタ10を設け} 11 } 12は- views.py流量制限器13はrest_framework.throttlingインポート機能からカスタム#14実装さScopedRateThrottle 15クラスDemo7APIView(APIView):16 throttle_scope ='コンタクト「タイトル18 DEF throttle_scopeによる流量制限を設定するには#17 。GET(自己、要求):レスポンスを返す19( 『テストカスタム制限機能』)20である- のURL。PY 21 urlpatterns = [22パス( 'DEMO7 /'、views.Demo7APIView.as_view())、23]
(D)、図の論理。