formdata 接受参数中带有class 对象_Django(五)- 请求与响应 - request对象
請求對象
一、客戶端傳參的幾種方式
1. 通過URL路徑(path)傳遞,例如:http://127.0.0.1:8000/news/1/2,兩個參數(shù):id和page
2. 通過 query string查詢字符串 傳遞
i. 例如:http://127.0.0.1:8000/news?category=1&page=2
3. 通過 body請求體 傳遞,又可根據(jù)傳遞的數(shù)據(jù)格式,分為:
i. 鍵值對:category=1&page=2
ii. 表單數(shù)據(jù)
iii. 非表單數(shù)據(jù)(json,xml)
4. 通過http協(xié)議請求頭(header)傳遞
二、HttpRequest對象
一、Django請求和響應(yīng)過程:
二、request對象常用屬性:
三、QueryDict對象
· 所在的包:django.http.QueryDict
· HttpRequest 對象中的 GET 和 POST 屬性都是QueryDict類型
· 與python字典不同:QueryDict對象一個鍵可以保存多個值
· get() 方法
(1) 根據(jù)鍵獲取值
(2) 如果一個鍵同時擁有多個值,將獲取最后一個值
(3) 如果鍵不存在則返回None值,可以設(shè)置返回自定義的默認值
dict.get('鍵', 默認值)
· getlist() 方法
(1) 根據(jù)鍵獲取多個值,值以列表返回
(2) 如果鍵不存在則返回空列表[]
dict.getlist('鍵', 默認值)
四、通過request獲取請求參數(shù)
1. 獲取查詢字符串
一、需求
獲取URL地址 http://127.0.0.1:8000/news?category=1&page=2
二、代碼參考
重要:查詢字符串不區(qū)分請求方式,即使客戶端通過POST方式發(fā)起請求,依然可以通過request.GET獲取
請求中的查詢字符串?dāng)?shù)據(jù)。
2. 獲取請求體數(shù)據(jù)
請求體數(shù)據(jù)格式不固定,可以是表單類型字符串,可以是JSON字符串,可以是XML字符串,應(yīng)區(qū)別對待。
可以發(fā)送請求體數(shù)據(jù)的請求方式有POST、PUT、PATCH、DELETE。
2.1 獲取表單數(shù)據(jù)Form Data(鍵值對)
前端發(fā)送的表單或鍵值對類型的請求體數(shù)據(jù),可以通過request.POST屬性獲取
重要:request.POST只能用來獲取POST方式的請求體表單數(shù)據(jù)或鍵值對數(shù)據(jù)。如果為非post請求提交的
請求體數(shù)據(jù),或者是請求體數(shù)據(jù)類型為非表單或非鍵值對數(shù)據(jù),則需要通過request.body屬性獲取提交的
數(shù)據(jù)后,再自己手動解析。
2.2 非表單類型 Non-Form Data
非表單類型的請求體數(shù)據(jù),Django無法自動解析,可以通過request.body屬性獲取最原始的請求體數(shù)據(jù),自
己按照請求體格式(JSON、XML等)進行解析。request.body返回bytes類型。
例如獲取請求體中的json數(shù)據(jù):{"category": 1, "page": 2}
3. 獲取請求頭數(shù)據(jù)
可以通過request.META屬性獲取請求頭headers中的數(shù)據(jù),request.META為字典類型。
注意:
· 獲取自定義的請求頭屬性值時,需要加前綴 HTTP_ 并轉(zhuǎn)成大寫,作為鍵來獲取值
示例:
總結(jié)
以上是生活随笔為你收集整理的formdata 接受参数中带有class 对象_Django(五)- 请求与响应 - request对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的抽象含义_Python中
- 下一篇: comsol积分函数_怎样在COMSOL