认证,权限,节流,解析器

通过as_view方法,执行dispatch函数,在dispatch函数中通过request的method方法,调用视图类的不同函数
as_view方法, 执行dispatch方法
继承rest framework 的APIView类APIView

继承了Django的View,并且重写了dispatch方法

微信截图_20190507192303.png

封装request

request = self.initialize_request(request, *args, **kwargs)
self.request = request

执行initial方法

self.initial(request, *args, **kwargs)

封装的request返回一个Request类的实例对象

图片.png

get_authenticators方法authentication_classes是一个放置认证类的列表,那么get_authenticators方法返回的就是认证类的实例化对象列表,传入到重写的request对象中

图片.png

执行initial方法perform_authentication函数

图片.png

perform_authentication函数调用封装后的requestd对象的user

图片.png

request.user方法调用了_authenticate方法

图片.png

_authenticate方法self.authenticators其中self指的是封装后的request对象

图片.png

权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。在执行视图的dispatch()方法前,会先进行视图访问权限的判断在通过get_object()获取具体对象时,会进行对象访问权限的判断

可以在配置文件中设置默认的权限管理类,如
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
也可以在具体的视图中通过permission_classes属性来设置,如
from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView
class ExampleView(APIView):
permission_classes = (IsAuthenticated,)

提供的权限

AllowAny 允许所有用户
IsAuthenticated 仅通过认证的用户
IsAuthenticatedOrReadOnly 认证的用户可以完全操作,否则只能get读取
设立一个全局变量字典,对于匿名用户,将用户的IP作为字典的键;对于登陆用户,将用户的用户名作为字典的键。设置字典的值为一个列表,列表中存储了用户访问的时间,可以通过对列表中的时间进行操作来控制访问频率


图片.png

setting中的配置

图片.png

如果使用URLPathVersioning,路由格式如下

url(r"^(?P<version>[v1|v2]+)/version/",VersionView.as_view(),name='vvvv')

进行全局设置后,用的时候只需要用request.data就可以自动解析数据为Json格式

作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程


图片.png

解析器的作用

根据请求头 content-type 选择对应的解析器对请求体内容进行处理。
有application/json,x-www-form-urlencoded,form-data等格式

settings.py 文件配置

图片.png

局部使用

在view.py中设置


图片.png

在视图类加上

图片.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 认证Authentication 可以在配置文件中配置全局默认的认证方案REST_FRAMEWORK = {'DE...
    LiWei_9e4b阅读 701评论 0 0
  • 一、restful架构 1、restful概述 ——REST即表述性状态传递(英文:Representationa...
    Zzmi阅读 1,447评论 0 2
  • 人活在世,见惯了世间人性的淡漠,就能知道人间真情的可贵,也易被这份真情感动。 之前我看过的一部...
    陆柒啊阅读 638评论 3 9
  • 对感叹号很敏感。 很不喜欢那些动不动就使用感叹号的人,我能从字里行间看到他们激动或愤怒的情绪。每次和这些人聊天我都...
    绿意葱茏阅读 806评论 1 1