一.了解什么是DRFhtml
DRF: Django REST frameworkjava
Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。python
一般简称为DRF框架 或 REST framework。web
DRF框架是创建在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。redis
二.DRF的特色数据库
提供了定义序列化器Serializer的方法,框架
能够快速根据 Django ORM 或者其它库自动序列化/反序列化;函数
提供了丰富的类视图、Mixin扩展类,简化视图的编写;工具
丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,知足各类须要;post
多种身份认证和权限认证方式的支持;
内置了限流系统;
直观的 API web 界面;
可扩展性,插件丰富
三.serializer对象的构建
Serializer的构造方法为:
Serializer(instance=None, data=empty, **kwarg)
说明:
1)用于序列化时,将模型类对象传入instance参数
2)用于反序列化时,将要被反序列化的数据传入data参数
3)除了instance和data参数外,在构造Serializer对象时,还可经过context参数额外添加数据,如
serializer = AccountSerializer(account, context={'request': request})
经过context参数附加的数据,能够经过Serializer对象的context属性获取。
四.通关context属性获取参数的具体用法:
引入视图基类GenericAPIView,继承自APIVIew
,主要增长了操做序列化器和数据库查询的方法.
提供的关于序列化器使用的属性与方法
属性:
serializer_class 指明视图使用的序列化器方法:
get_serializer_class(self)
返回序列化器类,默认返回serializer_class
,能够重写,例如:
get_serializer(self, args, *kwargs)
返回序列化器对象,主要用来提供给Mixin扩展类使用,若是咱们在视图中想要获取序列化器对象,也能够直接调用此方法。
注意,该方法在提供序列化器对象的时候,会向序列化器对象的context属性补充三个数据:request、format、view,这三个数据对象能够在定义序列化器时使用。
request 当前视图的请求对象# 判断用户是否在60s内使用同一个手机号码获取短信,mobile为手机号。经过context来获取当前类视图对象,经过kwargs来获取mobile。
mobile = self.context['view'].kwargs['mobile']
send_flag = redis_conn.get('send_flag_%s' % mobile)
if send_flag:
raise serializers.ValidationError('频繁发送短信')