寫寫Django中DRF框架概述以及序列化器對象serializer的構造方法以及使用

寫寫Django中DRF框架概述以及序列化器對象serializer的構造方法以及使用

一.瞭解什麼是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,能夠重寫,例如:

    1.  
      def get_serializer_class(self):
    2.  
      if self.request.user.is_staff:
    3.  
      return FullAccountSerializer
    4.  
      return BasicAccountSerializer
  • get_serializer(self, args, *kwargs)

    返回序列化器對象,主要用來提供給Mixin擴展類使用,若是咱們在視圖中想要獲取序列化器對象,也能夠直接調用此方法。

    注意,該方法在提供序列化器對象的時候,會向序列化器對象的context屬性補充三個數據:request、format、view,這三個數據對象能夠在定義序列化器時使用。

    request 當前視圖的請求對象 
  • view 當前請求的類視圖對象
  • format 當前請求指望返回的數據格式
  • 經過一段僞代碼表現context獲取參數數據
    • # 判斷用戶是否在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('頻繁發送短信')

相關文章
相關標籤/搜索