最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django REST framework 如何實現(xiàn)內(nèi)置訪問頻率控制

 更新時間:2019年07月23日 14:22:45   作者:little_pd  
這篇文章主要介紹了Django REST framework 內(nèi)置訪問頻率控制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

對匿名用戶采用 IP 控制訪問頻率,對登錄用戶采用 用戶名 控制訪問頻率。

from rest_framework.throttling import SimpleRateThrottle

class VisitThrottle(SimpleRateThrottle):
  """匿名用戶訪問頻率限制"""
  scope = "AnonymousUser" # 隨便寫的,可以作為key保存在緩存中

  def get_cache_key(self, request, view):
    return self.get_ident(request)

class UserThrottle(SimpleRateThrottle):
  """登錄用戶訪問頻率限制"""
  scope = "LoginUser"

  def get_cache_key(self, request, view):return request.user

可以配置redis

CACHES = {
  "default": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": "redis://127.0.0.1:6379",
    "OPTIONS": {
      "CLIENT_CLASS": "django_redis.client.DefaultClient",
      "CONNECTION_POOL_KWARGS": {"max_connections": 100}
      # "PASSWORD": "密碼",
    }
  }
}

匿名用戶的訪問頻率限制,這里設(shè)置在全站下,如下:

REST_FRAMEWORK = {
  "DEFAULT_THROTTLE_CLASSES": ["appxx.utils.VisitThrottle"],
  "DEFAULT_THROTTLE_RATES":{
      "AnonymousUser": "3/m", # 匿名用戶一分鐘可以訪問3次,秒(s)、分(m)、時(h)、天(d)
      "LoginUser": "10/m", # 登錄用戶一分鐘可以訪問10次
    }
}

登錄用戶的訪問頻率設(shè)置在單獨(dú)的視圖中,而視圖依賴身份認(rèn)證才能辨別用戶是否登陸了,所以設(shè)置如下:

class BookViewSet(viewsets.ModelViewSet):
  authentication_classes = [TokenAuthentication]
  throttle_classes = [UserThrottle]
  queryset = models.Book.objects.all()
  serializer_class = serializers.BookSerializer

用戶身份認(rèn)證如下:

from rest_framework import authentication
from rest_framework import exceptionsfrom appxx import models

class TokenAuthentication(authentication.BaseAuthentication):
  """身份認(rèn)證"""
  def authenticate(self, request):
    token = request.GET.get("token")
    obj = models.UserAuthToken.objects.filter(token=token).first()
    if not obj:
      raise exceptions.AuthenticationFailed("驗證失敗!")
    else:
      return (obj.user.username, obj.token)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python基礎(chǔ)之教你怎么在M1系統(tǒng)上使用pandas

    Python基礎(chǔ)之教你怎么在M1系統(tǒng)上使用pandas

    這篇文章主要介紹了Python基礎(chǔ)之教你怎么在M1系統(tǒng)上使用pandas,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python中關(guān)于property的最詳細(xì)使用方法

    python中關(guān)于property的最詳細(xì)使用方法

    這篇文章主要介紹了python中關(guān)于property的最詳細(xì)使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • python 比較字典value的最大值的幾種方法

    python 比較字典value的最大值的幾種方法

    這篇文章主要介紹了python 比較字典value的最大值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python從臨時郵箱獲取驗證碼的操作代碼

    Python從臨時郵箱獲取驗證碼的操作代碼

    這篇文章主要介紹了Python從臨時郵箱獲取驗證碼的操作代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • python2中的中文亂碼

    python2中的中文亂碼

    這篇文章主要介紹了python2中的中文亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python/R語言分別實現(xiàn)斐波那契數(shù)列的示例詳解

    Python/R語言分別實現(xiàn)斐波那契數(shù)列的示例詳解

    這篇文章將通過兩個小問題:年齡計算、斐波那契數(shù)列,帶領(lǐng)大家深入淺出的理解兩種語言的基本語法,并用以實際場景,需要的可以參考一下
    2022-03-03
  • pytorch之scatter_的用法及說明

    pytorch之scatter_的用法及說明

    這篇文章主要介紹了pytorch之scatter_的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python匹配中文的正則表達(dá)式

    Python匹配中文的正則表達(dá)式

    正則表達(dá)式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。接下來通過本文給大家介紹Python匹配中文的正則表達(dá)式,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Python實現(xiàn)彈球小游戲

    Python實現(xiàn)彈球小游戲

    這篇文章主要介紹了Python實現(xiàn)彈球小游戲的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • python連接mysql實例分享

    python連接mysql實例分享

    本文給大家匯總介紹了使用python連接mysql的幾個實例,非常的簡單實用,有需要的小伙伴可以參考下
    2016-10-10

最新評論

吕梁市| 盐池县| 诸城市| 日照市| 新安县| 沅陵县| 武夷山市| 郁南县| 南宁市| 虞城县| 金溪县| 河东区| 泽州县| 乌鲁木齐县| 汨罗市| 鄂托克旗| 通江县| 栾城县| 黄梅县| 佛山市| 共和县| 隆昌县| 太保市| 翁牛特旗| 永寿县| 湾仔区| 厦门市| 建水县| 江孜县| 深泽县| 鄂托克旗| 枣庄市| 新沂市| 进贤县| 石首市| 昭觉县| 吉木乃县| 溆浦县| 莫力| 曲阳县| 神农架林区|