AI-DRF許可權、頻率
阿新 • • 發佈:2018-12-07
許可權
邏輯:寫一個許可權元件,套入到需要加許可權的類中,元件中寫業務邏輯。業務邏輯:首先提前在user使用者中加入欄位user_type,寫好type=((1,"VIP"),(2,"SVIP"),(3,"SSVIP")),user_type=models.IntegerField(choices=type),當user_type>=2時,
表示可以訪問資源,按照原始碼流程,直接返回True即可,反之亦然。
#url.py url(r'^course/', views.Courseview.as_view()),
#views.py class SSVIPPermission(object): def get_permissions(self,request,view): #原始碼中摳的函式,view可有可無,一般不用 if request.user.user_type>=2: return True #原始碼中,如果許可權user_type大於等於2,相當於是svip、ssvip,表示可以訪問資源;
return False #返回False表示無許可權 class Courseview(APIView): permission_classes=[SSVIPPermission] #將許可權元件加入course這個資源類。 def get(self,request): # 使用序列化傳資料 course_list=Course.objects.all() cs=CourseSerializer(course_list,many=True) #如果有多個欄位,不可能使用course.desc這種方式,
需要序列化簡便! print(cs.data)return Response(cs.data) #我的序列化介面 def post(self,request): print(request.data) cs=CourseSerializer(data=request.data) if cs.is_valid(): #校驗 Course.objects.create(**request.data) return Response(cs.data) #序列化資料 else: return Response(cs.errors) # 序列化錯誤資訊