一.瞭解什麼是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('頻繁發送短信')