1.認證
定義乙個使用者表和乙個儲存使用者的token表
# django的settings檔案
2.許可權
只有vip使用者才能看的內容:
自定義許可權類:
from rest_framework.permissions import basepermission
class mypermission(basepermission):
message = "sorry,您沒有許可權"
def has_permission(self, request, view):
# 內建封裝的方法
'''判斷該使用者有沒有許可權
'''# 判斷使用者是不是vip使用者
# 如果是vip使用者就返回true
# 如果是普通使用者就返會flase
if request.method in ["post","put","delete"]:
# print(111)
print(request.user.username)
print(request.user.type)
print(type(request.user.type))
if request.user.type == 2: # 是vip使用者
print(2222)
return true
else:
return false
else:
return true
def has_object_permission(self, request, view, obj):
# 用來判斷針對的obj許可權:
''''''
if request.method in ["put","delete"]:
print(obj.user.username)
print(request.user.username)
if obj.user == request.user:
return true
else:
return false
else:
return true
檢視級別配置:
class commentviewset(modelviewset):
queryset = models.comment.objects.all()
authentication_classes = [myauth,]
permission_classes = [mypermission,]
全域性級別配置:
複製**
# rest framework 相關的配置
rest_framework =
}
3.節流
節流(throttling)類似於許可權,因為它決定了是否應該對請求進行授權。節流表示乙個臨時狀態,並用於控制客戶端對api的請求率。
我們可以先編寫乙個類
class visitthrottle(object):
def allow_request(self, request, view):
return true # false表示訪問頻率太高被限制
內建控制頻率的類
from rest_framework.throttling import basethrottle
class visitthrottle(basethrottle):
def __init__(self):
self.history = none
def allow_request(self, request, view):
# 1. 獲取使用者ip
remote_addr = request._request.meta.get("remote_addr")
# print(remote_addr)
# 2. 新增到訪問記錄中
ctime = time.time()
# 當visit_record中沒有這個記錄,可以直接訪問,新增乙個記錄
if remote_addr not in visit_record:
visit_record[remote_addr] = [ctime, ]
return true
history = visit_record.get(remote_addr)
self.history = history
# 拿到最後歷史記錄裡面的最後乙個時間,如果最後乙個時間小於當前時間-60
while history and history[-1] < ctime - 60:
history.pop()
if len(history) < 3:
history.insert(0, ctime)
return true
return false # false表示訪問頻率太高被限制
def wait(self):
"""還需要等多少秒可以訪問
:return:
"""ctime = time.time()
return 60 - (ctime - self.history[-1])
DRF十大元件
4.版本 版本控制 模型類設計 from django.db import models create your models here.class usergroup models.model title models.charfield max length 32,verbose name 使用...
DRF十大元件使用
23 request.request.post.get json資料格式 data json.loads request.body.decode utf 8 name data.get name age data.get age print name,age 使用drf解析器 from rest f...
drf 三大認證之 認證元件
原始碼分析 1 apiview的dispath self,request,args,kwargs 2 dispath方法內 self.initial request,args,kwargs 進入三大認證 認證元件 校驗使用者 遊客 合法使用者 非法使用者 非法使用者 代表校驗失敗,丟擲異常,返回40...