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是告訴對方我...