日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part7)--请求及HttpRequest对象

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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請求服務器刪除指定的頁面。
CONNECTHTTP1.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对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。