标签:permission APIView Rest Django Framework import 权限 方法 view
基本结构
urls.py
from django.conf.urls import url, include from app import views urlpatterns = [ url(r'^test/', views.TestView.as_view()), ]
views.py
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.request import Request from rest_framework import exceptions class MyPermission(object): def has_permission(request, self): ''' 权限代码编写区域 ''' return True #权限通过 如果权限不通过 返回False class TestView(APIView): permission_classes = [MyPermission, ] def get(self, request, *args, **kwargs): pass def post(self, request, *args, **kwargs): pass ''' 等等一系列的视图功能方法 '''
注意事项:
1.使用权限类
在需要权限控制的视图类中,写入permission_classes = [MyPermission, ],变量属性permission_classes 是个列表,列表中可写多个权限类,通过权限方才执行视图类的方法。(此方法属于局部的类的权限控制方式)
2.返回值
(1)Ture表示权限通过,False表示权限拒绝
源码分析
(1)寻找函数入口
通过urls.py文件,我们首先要寻找TestView类的as_view()方法,我们能在APIView类找到as_view()方法,APIView继承了View中as_view()方法,返回了一个view函数最终的结果就是调用了dispatch方法,整个视图类的入口就找到了。
(2)为什么要使用permission_classes 属性变量?
现在我们开始寻找dispatch方法,这时候请注意,我们应该从子类TestView中开始寻找这个方法,因为在子类中可能会重构父类的dispatch方法,最后我们在APIView类中找到了dispatch方法。
标签:permission,APIView,Rest,Django,Framework,import,权限,方法,view 来源: https://www.cnblogs.com/kxsph/p/10567972.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。