全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

Django請(qǐng)求和響應(yīng)設(shè)置圖文教程

更新時(shí)間:2019-12-12 來(lái)源:黑馬程序員 瀏覽量:

1、快速實(shí)現(xiàn)

①定義路由 urls.py

②定義視圖函數(shù) views.py

·······

③模型數(shù)據(jù)調(diào)用 創(chuàng)建表

④包含模板 加載模板(html····)
1.1、路由定義

1576142541193_Django的請(qǐng)求和響應(yīng)01.jpg

1576142551623_Django的請(qǐng)求和響應(yīng)02.jpg

1576142560506_Django的請(qǐng)求和響應(yīng)03.jpg

1.2、編寫(xiě)視圖

1576142587801_Django的請(qǐng)求和響應(yīng)04.jpg

1576142603616_Django的請(qǐng)求和響應(yīng)05.jpg


1.3、瀏覽器訪(fǎng)問(wèn)

1576142613435_Django的請(qǐng)求和響應(yīng)06.jpg

到這里,就完成了一個(gè)頁(yè)面請(qǐng)求。


2、請(qǐng)求

https://docs.djangoproject.com/zh-hans/2.1/ref/request-response/

客戶(hù)端請(qǐng)求服務(wù)器端攜帶的信息

屬性:

HttpRequest.scheme:請(qǐng)求的方式,即http或者是https

HttpRequest.body:請(qǐng)求的主體,返回的是一個(gè)字符串

HttpRequest.path:請(qǐng)求的路徑,這里的路徑是指相對(duì)路徑,也就是說(shuō)一個(gè)登陸后臺(tái)頁(yè)面的請(qǐng)求:http://127.0.0.1:8000/admin 的路徑是 /admin 

HttpRequest.method:請(qǐng)求方式 POST/GET

HttpRequest.encoding:請(qǐng)求提交的數(shù)據(jù)的編碼方式

HttpRequest.GET:獲取get方式表單中或url提交的數(shù)據(jù)

HttpRequest.POST:獲取post方式表單中或url提交的數(shù)據(jù)

HttpRequest.META:獲取的是一個(gè)標(biāo)準(zhǔn)的python字典。它包含了所有的HTTP請(qǐng)求信息

方法:

HttpRequest.get_host():請(qǐng)求的地址

HttpRequest.get_port():請(qǐng)求的端口

HttpRequest.get_full_path():請(qǐng)求的完整路徑,包括get參數(shù)

1576142624013_Django的請(qǐng)求和響應(yīng)07.jpg

1576142635555_Django的請(qǐng)求和響應(yīng)08.jpg

接收GET方式傳值

1576142647055_Django的請(qǐng)求和響應(yīng)09.jpg

1576142658559_Django的請(qǐng)求和響應(yīng)10.jpg


3、服務(wù)器端返回給客戶(hù)端的信息


屬性:

HttpResponse.content:響應(yīng)內(nèi)容

HttpResponse.status_code:響應(yīng)狀態(tài)碼

HttpResponse.content_type:響應(yīng)類(lèi)型(默認(rèn)是:text/html )

1576142669281_Django的請(qǐng)求和響應(yīng)11.jpg

1576142680860_Django的請(qǐng)求和響應(yīng)12.jpg

4、GET請(qǐng)求傳參和接收

Get請(qǐng)求是明文傳輸,信息附加在url上面。

在HttpRequest對(duì)象中,GET屬性是django.http.QueryDict 的實(shí)例,它是一個(gè)自定義的類(lèi)似字典的類(lèi),用來(lái)處理同一個(gè)鍵帶有多個(gè)值。這個(gè)類(lèi)的需求來(lái)自某些HTML 表單元素傳遞多個(gè)值給同一個(gè)鍵。

request.GET的QueryDict 在一個(gè)正常的請(qǐng)求/響應(yīng)循環(huán)中是不可變的。

例:接收URL通過(guò)GET方式傳輸過(guò)來(lái)的參數(shù),并打印到頁(yè)面上

①接收到參數(shù)

②通過(guò)response返回參數(shù)

·定義路由

1576142739509_Django的請(qǐng)求和響應(yīng)13.jpg


·定義視圖函數(shù)

1576142754346_Django的請(qǐng)求和響應(yīng)14.jpg

1576142806615_Django的請(qǐng)求和響應(yīng)15.jpg


③進(jìn)行參數(shù)組合返回給頁(yè)面顯示

1576142817068_Django的請(qǐng)求和響應(yīng)16.jpg


5、POST請(qǐng)求傳參和接收

POST相對(duì)于Get請(qǐng)求是安全的,所有信息附加在表單中。

在HttpRequest對(duì)象中,POST屬性是django.http.QueryDict 的實(shí)例,它是一個(gè)自定義的類(lèi)似字典的類(lèi),用來(lái)處理同一個(gè)鍵帶有多個(gè)值。這個(gè)類(lèi)的需求來(lái)自某些HTML 表單元素傳遞多個(gè)值給同一個(gè)鍵。

request.POST的QueryDict 在一個(gè)正常的請(qǐng)求/響應(yīng)循環(huán)中是不可變的。

例:通過(guò)postman(接口調(diào)試工具)模擬發(fā)送POST請(qǐng)求,傳輸參數(shù)并把參數(shù)打印到頁(yè)面

①postman發(fā)送數(shù)據(jù)

1576142833431_Django的請(qǐng)求和響應(yīng)17.jpg

Tip:403 CSRF 禁止訪(fǎng)問(wèn)

解決方案一: 禁止關(guān)閉 CSRF 限制

1576142846304_Django的請(qǐng)求和響應(yīng)18.jpg

②返回?cái)?shù)據(jù)信息

1576142863207_Django的請(qǐng)求和響應(yīng)19.jpg

1576142873753_Django的請(qǐng)求和響應(yīng)20.jpg


6、QueryDict對(duì)象

QueryDict.get(key, default=None)

QueryDict.getlist(key, default=None)

1576142885984_Django的請(qǐng)求和響應(yīng)21.jpg

QueryDict.items()

QueryDict.lists()

1576142902013_Django的請(qǐng)求和響應(yīng)22.jpg


猜你喜歡:
Django函數(shù)視圖和模板介紹
如何配置Django+HTTPS開(kāi)發(fā)環(huán)境?
Django框架環(huán)境安裝教程
Django框架中路由詳細(xì)介紹
Django數(shù)據(jù)庫(kù)連接的問(wèn)題
django文件上傳

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!