DRF十大組件的使用和作用

drf的序列化組件:

1.作用: 把python中的對象,轉(zhuǎn)成json格式字符串
2. 使用步驟1: 寫一個類繼承Serializer或者ModelSerializer
舉例(類中選取字段進行序列化):
class BookSerializer(serializers.Serializer):
id = serializers.CharField()
      title = serializers.CharField()
      price = serializers.CharField()  
舉例(把類中字段全部進行序列化):    
class TestSer(serializers.ModelSerializer):
class Meta:
model = models.Takes
fields = '__all__'

總結(jié):

    1. 變量名和source指定的值不能一樣
    1. source='publish.name'還支持繼續(xù) .
    1. source 還支持方法(沒用)
    1. 支持寫方法,如下
      方法一定傳一個參數(shù),是當前book對象
      publish_dic=serializers.SerializerMethodField()
      def get_publish_dic(self,obj):
      return
      結(jié)果:{'id':obj.publish.pk,'name':obj.publish.name}

drf的認證組件

1.認證組件的好處:
比如要訪問books/路徑,必須登錄之后才能訪問铃在。一旦登錄成功,在響應結(jié)果中寫一個隨機字符串
舉例:{status:100
      msg:登錄成功
      token:sdafsdfasd
           }
2.使用步驟1:寫一個類,繼承BaseAuthentication

3.使用步驟2:def authenticate(self,request) ,記住傳request對象

4.在視圖類中使用:(不要加括號):
1.局部使用:authentication_classes=[AuthLogin](寫在views中)
2.全局使用:-REST_FRAMEWORK={"DEFAULT_AUTHENTICATION_CLASSES":["app01.auth.AuthLogin",](在setting中配置)
3.全局使用的局部禁用:authentication_classes = [](寫在views中)

drf的權(quán)限組件:

1.使用步驟1:寫一個類,繼承BasePermission
2.使用步驟2:def has_permission(self, request, view): ,記住傳request對象和view
3.在視圖類中使用:(不要加括號):
1.局部使用:permission_classes=[MyPer](寫在views中)
2.全局使用:-REST_FRAMEWORK={"DEFAULT_PERMISSION_CLASSES":['app01.auth.MyPer']}(在setting中配置)
3.全局使用的局部禁用:permission_classes = [](寫在views中)

drf的節(jié)流組件

1.使用步驟1:寫一個類,繼承SimpleRateThrottle
2.使用步驟2:def get_cache_key(self, request, view):,記住傳request對象和view
3.使用步驟3
:'DEFAULT_THROTTLE_RATES': {
這個key跟scope對應,value值3/m  3/h    4/d
 'xx': '3/m'
}(在setting中配置)
節(jié)流作用:節(jié)流(Throttling)類似于權(quán)限,因為它決定了是否應該對請求進行授權(quán)阵具。節(jié)流表示一個臨時狀態(tài),并用于控制客戶端對API的請求率。

DRF視圖的組件

使用:
1.局部使用:throttle_classes = [VisitThrottle](寫在views中)
2.全局使用:REST_FRAMEWORK={"DEFAULT_THROTTLE_CLASSES":["app01.auth.VisitThrottle"]}(在setting中配置)
3.全局使用的局部禁用:throttle_classes = [](寫在views中)
視圖作用: 數(shù)據(jù)庫查詢, 2. 構(gòu)建序列化器, 進行序列化操作, 返回數(shù)據(jù)

drf的解析器

1.局部使用:parser_classes=[JSONParser,](寫在views中)
2.全局使用:'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser'](在setting中配置)
解析器作用:解析器的作用就是服務端接收客戶端傳過來的數(shù)據(jù)定铜,把數(shù)據(jù)解析成自己可以處理的數(shù)據(jù)阳液。本質(zhì)就是對請求體中的數(shù)據(jù)進行解析。

drf的渲染器

DRF提供的渲染器有很多揣炕,默認是
'DEFAULT_RENDERER_CLASSES': (
    'rest_framework.renderers.JSONRenderer',       
    'rest_framework.renderers.BrowsableAPIRenderer',
),
渲染器的作用:渲染器同解析器相反帘皿,它定義了框架按照content_type來返回不同的響應。

def的分頁組件

1.路由
urlpatterns = [
        re_path('(?P<version>[v1|v2]+)/page1/', Pager1View.as_view(),)    #分頁1
    ]
序列化
from rest_framework import serializers
from api import models
class PagerSerialiser(serializers.ModelSerializer):
    class Meta:
        model = models.Role
        fields = "__all__"
視圖
from api.utils.serializsers.pager import PagerSerialiser
from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination
class Pager1View(APIView):
    def get(self,request,*args,**kwargs):
        #獲取所有數(shù)據(jù)
        roles = models.Role.objects.all()
        #創(chuàng)建分頁對象
        pg = PageNumberPagination()
        #獲取分頁的數(shù)據(jù)
        page_roles = pg.paginate_queryset(queryset=roles,request=request,view=self)
        #對數(shù)據(jù)進行序列化
        ser = PagerSerialiser(instance=page_roles,many=True)
        return Response(ser.data)
settings配置
REST_FRAMEWORK = {
    #分頁
    "PAGE_SIZE":2   #每頁顯示多少個
}

版本的組件

路由的組件

使用方法
創(chuàng)建router對象畸陡,并注冊視圖集鹰溜。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丁恭,隨后出現(xiàn)的幾起案子曹动,更是在濱河造成了極大的恐慌,老刑警劉巖涩惑,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仁期,死亡現(xiàn)場離奇詭異,居然都是意外死亡竭恬,警方通過查閱死者的電腦和手機跛蛋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痊硕,“玉大人赊级,你說我怎么就攤上這事〔沓瘢” “怎么了理逊?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盒揉。 經(jīng)常有香客問我晋被,道長,這世上最難降的妖魔是什么刚盈? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任羡洛,我火速辦了婚禮,結(jié)果婚禮上藕漱,老公的妹妹穿的比我還像新娘欲侮。我一直安慰自己,他們只是感情好肋联,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布威蕉。 她就那樣靜靜地躺著,像睡著了一般橄仍。 火紅的嫁衣襯著肌膚如雪韧涨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天侮繁,我揣著相機與錄音氓奈,去河邊找鬼。 笑死鼎天,一個胖子當著我的面吹牛舀奶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斋射,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼育勺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罗岖?” 一聲冷哼從身側(cè)響起涧至,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桑包,沒想到半個月后南蓬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年赘方,在試婚紗的時候發(fā)現(xiàn)自己被綠了烧颖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡窄陡,死狀恐怖炕淮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跳夭,我是刑警寧澤涂圆,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站币叹,受9級特大地震影響润歉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颈抚,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一踩衩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邪意,春花似錦九妈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至策菜,卻和暖如春晶疼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背又憨。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工翠霍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饥脑,地道東北人话速。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像呻率,于是被迫代替她去往敵國和親躏将。 傳聞我的和親對象是個殘疾皇子锄弱,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容