Django drf架構 解析器的詳解

2021-09-24 12:24:34 字數 2041 閱讀 2172

解析器的作用就是伺服器接收客戶端傳過來的資料,把資料解析自己想要的資料型別的過程

簡單說就是對請求體中的資料進行解析

簡單分析:

注意

1.檢視apiview中的dispatch發現,用initialize_request方法進行變身,例項化了乙個新的request物件並賦值給request 。

2.在新的request類中找到了request.data這個方法,這才是真正解析的開始:

總結

1.首先找自己檢視類裡面的:

class

parserview

(apiview)

: parser_classes =

[jsonparser]

......邏輯...

...

2.找不到自己的,就去全域性進行查詢。

3.以上都不滿足,就找預設的。

1.區域性使用,可以基於類(apiview)的檢視上設定單個檢視或檢視集的解析器 :

from rest_framework.parsers import jsonparser, formparser

# 建立乙個cbv

class

parserview

(apiview)

: # 設定區域性的解析器

parser_classes =

[jsonparser]

""" """

def post

(self, request,

*args,

**kwargs)

:"""

允許使用者傳送json格式的資料

b.""" """

1. 獲取使用者請求

2. 獲取使用者請求體

3. 根據使用者請求頭和 parser_classes =

[jsonparser, formparser] 中支援的請求頭進行比較

4. jsonparser物件中去請求體

)

或fbv,@api_view裝飾器一起使用

from rest_framework.decorators import api_view

from rest_framework.decorators import parser_classes

from rest_framework.parsers import jsonparser

@api_view([

'post'])

@parser_classes

((jsonparser,))

def example_view

(request, format=none)

:"""

a view that can accept post requests with

json content.

""" return

response

()

2.全域性使用,可以使用default_parser_classes設定預設的全域性解析器 :

# 全域性使用,在settings.py中進行配置

rest_framework

=

1.jsonparser

2.formparser

3.multparparser

4.fileuploadparser

使用解析器

使用解析器 使用解析器是非常簡單,可以使用它自己的詞法分析器,但是,用fsyacc.exe 產生的解析器總是要求詞法分析器。在這一小節,我們將討論如何使用自己的詞法分析器,以及與解析器聯合。警告記住f 編譯器不能直接使用.fsl 和 fsy 檔案,需要用fslex.exe 和 fsyacc.exe ...

指令碼解析器

指令碼解析器 命令指令碼解析器,自建立一種指令碼語法,解釋執行它。目前指令碼形式類似於命令,沒有變數型別的概念,關鍵字為 if else while break continue 解釋與c語言一樣。上傳 型別 無型別,全為字串看待。作用域 當前大括號中,以及所有子大括號中,退出當前大括號則清除變數。...

網頁解析器

學習任務 1.認識網頁解析器 學習目標 知識目標 1.熟悉網頁解析器 能力目標 1.能夠自主編寫網頁解析器 獲取新url函式 獲取新的url def get new urls self,page url,soup 儲存url new urls set 獲取所有的url 獲取每乙個url new ur...