Django(part7)--请求及HttpRequest对象
生活随笔
收集整理的這篇文章主要介紹了
Django(part7)--请求及HttpRequest对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考
請求
HTTP請求
- 根據HTTP標準,HTTP請求可以使用多種請求方法。
- HTTP1.0定義了三種請求方法:GET,POST和HEAD方法(最常用)
- HTTP1.1新增了五種請求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
HTTP1.1請求詳述
| GET | 請求指定的頁面信息,并返回實體主體。 |
| HEAD | 類似于get請求,只不過返回的響應中沒有具體的內容,用于獲取報頭 |
| POST | 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。 數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 |
| DELETE | 請求服務器刪除指定的頁面。 |
| CONNECT | HTTP1.1協議中預留給能夠將連接改為管道方式的代理服務器。 |
| OPTIONS | 允許客戶端查看服務器的性能。 |
| TRACE | 回顯服務器收到的請求,主要用于測試或診斷。 |
| PUT | 從客戶端向服務器傳送的數據取代指定的文檔的內容。 |
HttpRequest對象
當服務器接收到http協議的請求后,會根據請求數據報文創建HttpRequest對象,視圖函數中第一個參數request接受的就是HttpRequest對象,比如:
def page_bunny(request, name, age):html = "Bunny's name is " + name + " and its age is " + agereturn HttpResponse(html)- HttpRequest屬性
- path:字符串,表示請求的路由信息
- method:字符串,表示HTTP請求方法,常用值:‘GET’,‘POST’
- encoding:字符串,表示提交的數據的編碼方式
- GET: QueryDict查詢字典的對象,包含get請求方式的所有數據
- POST: QueryDict查詢字典的對象,包含post請求方式的所有數據
- FILES:類似于字典的對象,包含所有的上傳文件
- COOKIES:Python字典,包含所有的cookie,鍵和值都為字符串
- session:似于字典的對象,表示當前的會話
- body:字符串,請求體的內容
- environ:字符串,客戶端運行的環境變量信息
- scheme:請求協議(‘http’/‘https’)
- path_info:URL字符串
- request.get_full_path():請求的完整路徑
- request.get_host():請求的主機
- request.META:請求中的元數據(消息頭)
- request.META[‘REMOTE_ADDR’]:客戶端IP地址
- request.META[‘HTTP_REFERER’]:請求源地址
舉個例子
我們在views.py中輸入如下代碼:
def page_bunny(request, name, age):print("request.path = " + request.path)print("request.method = " + request.method)html = "Bunny's name is " + name + " and its age is " + agereturn HttpResponse(html)并向http://127.0.0.1:8000/bunny/10/huang/發起請求:
這時我們的請求頭為(通過Chrome瀏覽器中的【檢查】【Network】查看):
GET /bunny/10/huang/ HTTP/1.1 Host: 127.0.0.1:8000 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site: none Sec-Fetch-Mode: navigate Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9我們再看看cmd中的輸出(cmd會顯示視圖函數中print方法要打印的內容):
request.path = /bunny/10/huang/ request.method = GET可以看見我們的路由為/bunny/10/huang/,請求方式為GET
總結
以上是生活随笔為你收集整理的Django(part7)--请求及HttpRequest对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB观察日志(part1)--求
- 下一篇: 拒接电话对方能听到什么(汉典拒字的基本解