HttpRequest對象常用參數介紹,以及前端不同請求方式(http方法/Content-Type類型)對應的參數獲取方式。
一、HttpRequest對象
django請求對象的詳細參數以及實現方式可以在django.http.request查看源碼具體分析,也可以查看官方文檔https://docs.djangoproject.com/en/3.0/ref/request-response/
1.屬性介紹
(1) request.scheme
請求的協議種類(http/https)
(2) request.path
請求頁面的完整路徑(get_full_path()在path的基礎上還有查詢條件)
(3) request.method
請求使用的http方法(POST,GET,DELETE,PUT...)
(4) request.content_type
請求的MIME類型
(5) request.GET/request.POST
get/post請求中的所有參數,類似於字典的對象
(6) request.COOKIES
請求包含的cookie字典
(7) request.FILES
上載文件的類字典對象
(8) request.headers(Django2.2新功能)
獲取請求headers里面的內容,不區分大小寫,類似字典的對象
request.headers["Cotent-Length"] 請求報文中實體主體的字節大小
request.headers["Content-Type"] 請求的MIME類型
request.headers["User-Agent"] 請求的用戶代理
(9) request.META
包含所有HTTP頭部信息的字典
- CONTENT_LENGTH –請求正文的長度(以字符串形式)
- CONTENT_TYPE –請求正文的MIME類型
- HTTP_ACCEPT –響應可接受的內容類型
- HTTP_ACCEPT_ENCODING –響應的可接受編碼
- HTTP_ACCEPT_LANGUAGE –可接受的響應語言。
- HTTP_HOST –客戶端發送的HTTP Host標頭
- HTTP_USER_AGENT –客戶端的用戶代理字符串。
- REMOTE_ADDR –客戶端的IP地址。
- REMOTE_HOST –客戶端的主機名
- SERVER_NAME –服務器的主機名
- SERVER_PORT –服務器的端口(以字符串形式)
- SERVER_PROTOCOL –http協議版本(HTTP/1.1)
(10) request.user
(11) request.session
代表當前會話的可讀可寫,類似於字典的對象(刪除用戶登錄的session,request.session.delete(session_key) )
2.方法介紹
(1) request.get_host()
獲取主機域名或者IP加端口號
(2) request.get_port()
請求端口號
(3) request.is_secure()
如果使用的是Https,則返回True,表示連接是安全的
(4) request.get_full_path()
帶有請求參數的完整path
二、請求參數獲取
1.content-type為application/json(消息主體是序列化后的json字符串)
如果當前端請求的content-type為json字符串的時候,django需要通過json.loads(request.body)來獲取請求體里面的參數
2.content-type為application/x-www-form-urlencode(數據被編碼為key/value,這是標准的編碼格式)
(1)當請求方式為get/post
當請求方式為post/get的時候,可以直接通過request.GET.get()/request.POST.get()來直接獲取請求的參數
(2)當請求方式為delete/put/patch/options...
當請求方式不為get/post的時候,在獲取前端請求的參數,需要把request.body轉化為QueryDict對象,然后通過get方法獲取想要的參數即可(QueryDict(request.body).get())