DRF筆記六 解析器

2021-10-03 13:54:19 字數 3289 閱讀 2422

b、ajax提交

根據請求頭 content-type 選擇對應的解析器就請求體內容進行處理。

#url.py

from django.conf.urls import url, include

from web.views.s5_parser import testview

urlpatterns =

[ url(r'test/'

, testview.as_view(

), name=

'test'),

]

#view.py

from rest_framework.views import apiview

from rest_framework.response import response

from rest_framework.request import request

from rest_framework.parsers import jsonparser

class

testview

(apiview)

: parser_classes =

[jsonparser,

]def

post

(self, request,

*args,

**kwargs)

:print

(request.content_type)

# 獲取請求的值,並使用對應的jsonparser進行處理

print

(request.data)

print

(request.post)

print

(request.files)

return response(

'post請求,響應內容'

)def

put(self, request,

*args,

**kwargs)

:return response(

'put請求,響應內容'

)

僅處理請求頭content-type為multipart/form-data的請求體(multipartparser)

僅上傳檔案(fileuploadparser)

同時多個parser,當同時使用多個parser時,rest framework會根據請求頭content-type自動進行比對,並使用對應parser

# url.py

from django.conf.urls import url, include

from web.views import testview

urlpatterns =

[ url(r'test/'

, testview.as_view(

), name=

'test'),

]

# view.py

from rest_framework.views import apiview

from rest_framework.response import response

from rest_framework.request import request

from rest_framework.parsers import jsonparser, formparser, multipartparser

class

testview

(apiview)

: parser_classes =

[jsonparser, formparser, multipartparser,

]def

post

(self, request,

*args,

**kwargs)

:print

(request.content_type)

# 獲取請求的值,並使用對應的jsonparser進行處理

print

(request.data)

print

(request.post)

print

(request.files)

return response(

'post請求,響應內容'

)def

put(self, request,

*args,

**kwargs)

:return response(

'put請求,響應內容'

)

全域性使用

# settings.py

rest_framework =

# url.py

from django.conf.urls import url, include

from web.views import testview

urlpatterns =

[ url(r'test/'

, testview.as_view(

), name=

'test'),

]

# view.py

from rest_framework.views import apiview

from rest_framework.response import response

class

testview

(apiview)

:def

post

(self, request,

*args,

**kwargs)

:print

(request.content_type)

# 獲取請求的值,並使用對應的jsonparser進行處理

print

(request.data)

print

(request.post)

print

(request.files)

return response(

'post請求,響應內容'

)def

put(self, request,

*args,

**kwargs)

:return response(

'put請求,響應內容'

)

注意:個別特殊的值可以通過django的request物件 request._request 來進行獲取

DRF之解析器元件

django 原生解析器 from django.core.handlers.wsgi import wsgirequest post property get post,set post 找 def load post and files self 函式,判斷型別,然後進行解析封裝。只支援 con...

小談DRF之解析器相關

5.1.1 request.post中如何才能取到值?要求 資料格式的要求 5.1.2 檢視原始碼 先看我們寫的 from django.conf.urls import url from django.contrib import admin urlpatterns url r admin adm...

DRF 的解析器和渲染器

解析器的作用就是服務端接收客戶端傳過來的資料,把資料解析成自己可以處理的資料。本質就是對請求體中的資料進行解析。在了解解析器之前,我們要先知道accept以及contenttype請求頭。accept是告訴對方我能解析什麼樣的資料,通常也可以表示我想要什麼樣的資料。contenttype是告訴對方我...