六 .Django---framework框架 throttle(訪問頻率)組件

一 throttle(訪問頻率)組件

https://www.cnblogs.com/apollo1616/articles/10101236.html       Django DRF頻率組件限制用戶一分鐘訪問次數html

https://www.diandian100.cn/8c6a0357.html       DRF頻率組件的使用方式web

from rest_framework.views import APIView 源碼中
 self.check_throttles(request) # 頻率組件 必須是 

def allow_request():
pass
 
 
views

from rest_framework import serializers

from django.shortcuts import render,HttpResponse
from django.views import View
from rest_framework.response import Response
from .models import *
from rest_framework.views import APIView


# 序列化
class AuthorModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = Author
        fields = "__all__"




# 頻率組件
class VisitRateThrottle(object):
    def allow_request(self,request,view):
        # 要求訪問站點的頻率不能超過每分鐘20次
        if 1:
            print(request.META.get("REMOTE_ADDR"))

            return True
        else:
            return False


from rest_framework.response import  Response
class AuthorModelView(viewsets.ModelViewSet):

    #authentication_classes = [TokenAuth,]  認證組件
    #permission_classes=[SVIPPermission,]   權限組件
    throttle_classes = [VisitRateThrottle]    # 限制某個IP每分鐘訪問次數不能超過20次
    queryset = Author.objects.all()
    serializer_class = AuthorModelSerializers
    renderer_classes = []
url(r'^authors/$', views.AuthorModelView.as_view({"get":"list","post":"create"}),name="author"),

 

 

 認證權限頻率 組件   

 print(request.META) # 一個標準的Python 字典,包含全部的HTTP 首部。具體的頭部信息取決於客戶端和服務器,下面是一些示例:
    CONTENT_LENGTH —— 請求的正文的長度(是一個字符串)。
    CONTENT_TYPE —— 請求的正文的MIME 類型。
    HTTP_ACCEPT —— 響應可接收的Content-Type。
    HTTP_ACCEPT_ENCODING —— 響應可接收的編碼。
    HTTP_ACCEPT_LANGUAGE —— 響應可接收的語言。
    HTTP_HOST —— 客服端發送的HTTP Host 頭部。
    HTTP_REFERER —— Referring 頁面。
    HTTP_USER_AGENT —— 客戶端的user-agent 字符串。
    QUERY_STRING —— 單個字符串形式的查詢字符串(未解析過的形式)。
    REMOTE_ADDR —— 客戶端的IP 地址。
    REMOTE_HOST —— 客戶端的主機名。
    REMOTE_USER —— 服務器認證後的用戶。
    REQUEST_METHOD —— 一個字符串,例如"GET""POST"。
    SERVER_NAME —— 服務器的主機名。
    SERVER_PORT —— 服務器的端口(是一個字符串)。
   從上面能夠看到,除 CONTENT_LENGTH 和 CONTENT_TYPE 以外,請求中的任何 HTTP 首部轉換爲 META 的鍵時,
    都會將全部字母大寫並將鏈接符替換爲下劃線最後加上 HTTP_  前綴。
    因此,一個叫作 X-Bender 的頭部將轉換成 META 中的 HTTP_X_BENDER 鍵
 
 

 

   
      
   request.META: 包含的信息
        {'ALLUSERSPROFILE': 'C:\\ProgramData', 
        'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', 
        'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 
        'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
        'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 
        'COMPUTERNAME': 'PC201712041709',
        'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 
        'DJANGO_SETTINGS_MODULE': 'restdemo.settings', 
        'FP_NO_HOST_CHECK': 'NO', 'HOMEDRIVE': 'C:', 
        'HOMEPATH': '\\Users\\Administrator',
        'LOCALAPPDATA': 'C:\\Users\\Administrator\\AppData\\Local', 
        'LOGONSERVER': '\\\\PC201712041709', 
        'NUMBER_OF_PROCESSORS': '4', 'OS': 'Windows_NT',
        'PATH': 'C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\Scripts;C:\\Python27;E:\\MySQL Server 5.6\\bin;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\Scripts\\;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\;C:\\Users\\Administrator\\AppData\\Local\\atom\\bin', 
        'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 
        'PROCESSOR_ARCHITECTURE': 'AMD64', 
        'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 60 Stepping 3, GenuineIntel',
        'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '3c03', 
        'PROGRAMDATA': 'C:\\ProgramData',
        'PROGRAMFILES': 'C:\\Program Files',
        'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 
        'PROGRAMW6432': 'C:\\Program Files', 
        'PSMODULEPATH': 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 
        'PUBLIC': 'C:\\Users\\Public', 'PYCHARM_HOSTED': '1', 'PYTHONIOENCODING': 'UTF-8', 
        'PYTHONPATH': 'C:\\Users\\Administrator\\PycharmProjects\\s9\\restdemo', 'PYTHONUNBUFFERED': '1', 
        'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 
        'TEMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp',
        'USERDOMAIN': 'PC201712041709', 
        'USERNAME': 'Administrator', 
        'USERPROFILE': 'C:\\Users\\Administrator', 
        'WINDIR': 'C:\\Windows', 'WINDOWS_TRACING_FLAGS': '3', 
        'WINDOWS_TRACING_LOGFILE': 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log',
        'RUN_MAIN': 'true', 'SERVER_NAME': 'PC201712041709', 
        'GATEWAY_INTERFACE': 'CGI/1.1', 'SERVER_PORT': '8000', 
        'REMOTE_HOST': '', 
        'CONTENT_LENGTH': '', 
        'SCRIPT_NAME': '', 
        'SERVER_PROTOCOL': 'HTTP/1.1', 
        'SERVER_SOFTWARE': 'WSGIServer/0.2', 
        'REQUEST_METHOD': 'GET', 
        'PATH_INFO': '/authors/', 
        'QUERY_STRING': 'token=8204b8e3ac40bf59ae480d17c146b51a', 
        'REMOTE_ADDR': '127.0.0.1', 
        'CONTENT_TYPE': 'text/plain', 
        'HTTP_HOST': '127.0.0.1:8000', 
        'HTTP_CONNECTION': 'keep-alive', 
        'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36', 
        'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 
        'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br', 'HTTP_ACCEPT_LANGUAGE': 'zh-CN,zh;q=0.9', 'HTTP_COOKIE': 'csrftoken=jtus3l4GJEc9TFXWYCWxkBIZprcOv7C1vFMIyOHs7Zkxt015FwVZ2KEEeDV6LOyN', 'wsgi.input': <_io.BufferedReader name=832>, 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>, 'wsgi.version': (1, 0), 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.multithread': True, 'wsgi.multiprocess': False, 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>}
    
相關文章
相關標籤/搜索