django rest framework 之 解析器
阿新 • • 發佈:2018-11-09
quest code amp cati bmi name parse 內部 表單提交
一、前言
在前端向後臺發送form表單或者ajax數據的時候,django的content_type會拿到請求頭中的Content-Type屬性然後根據值進行解析。
將request.data中的值放到request.POST中需要滿足兩個條件
- 請求頭要求:
Content-Type: application/x-www-form-urlencoded
PS: 如果請求頭中的 Content-Type: application/x-www-form-urlencoded,request.POST中才有值(去request.body中解析數據)。 - 數據格式要求:
name=weilan&age=18&gender=男
1、表單提交
form表單提交時會自動的將請求頭中的Content-Type: application/x-www-form-urlencoded,數據也會自動轉換為?parser=xxx&parser2=xxx的格式
<form action="/api/parser/" method="post"> <input type="text" name="parser"/> <input type="text" name="parser2"/> <input type="submit"/> </form>>
2、ajax提交
默認的請求頭中Content-Type: application/x-www-form-urlencoded
$.ajax({
url:...
type:POST,
data:{name:alex,age=18} # 內部轉化 name=weilan&age=18&gender=男
})
情況一:
$.ajax({ url:... type:POST, headers:{'Content-Type':"application/json"} data:{name:weilan,age=18} # 內部轉化 name=weilan&age=18&gender=男 }) # body有值;POST無
情況二:
$.ajax({
url:...
type:POST,
headers:{'Content-Type':"application/json"}
data:JSON.stringfy({name:weilan,age=18}) # {name:weilan,age:18...} # 不在做內部轉換,而是傳遞字符串
})
# body有值;POST無
# 這種情況下request.body有值, 需要字節類型轉換成字符串類型。
# json.loads(request.body)
django rest framework 之 解析器