django中views中方法的request參數


知其然亦要知其所以然

views每個方法的參數都是request,那么問題來了,request為何物?

首先,幾乎每個方法都是取數據(無論是從數據庫,還是從第三方接口),然后進行一定的處理,之后傳給前端。而前端請求數據,就會向后端發送一個http請求,這個請求的請求路徑,經過urls,會調用url中指定的方法。此時django就會將HttpRequest對象作為第一個參數傳入此方法。故,request即為一個httpRequest對象。

然后,出現了一個新問題,httpRequest是什么,又含有什么屬性和方法?

  1. httpRequest類定義在django.http中
  2. httpRequest對象是由django自動創建的

常見屬性: 

  • HttpRequest.method  字符串類型,表示所用的http方法
  • HttpRequest.content_type  指content_type頭解析的請求的MIME類型
  • HttpRequest.content_params 指content_type標題中的 k/v參數字典
  • HttpRequest.GET 此為一個字典一樣的對象,里面有get請求中的所有參數
  • HttpRequest.POST 此亦為一個字典一樣的對象,里面有post請求表單中數據
  • HttpRequest.COOKIES 此仍為一個字典一樣的對象,包含所有的cookie數據
  • HttpRequest.session  : SessionMiddleware中間件,可讀寫的,為一個字典一樣的對象,表示當前會話。我們要保存用戶狀態,回話過程等等,需要利用此中間件
  • HttpRequest.user : AuthenticationsMiddleware中間件:表示當前登錄用戶的AUTH_USER_MODEL實例,若未登錄,賊user為AnonymousUser實例

QueryDict:

  在HttpRequest 對象中,屬性 GET 和 POST 得到的都是 django.http.QueryDict 所創建的實例,此亦為一個類似於字典一樣的類。

  經常用的方法為QueryDict.get(key,default) ,返回key對應的值,若對應多個值,則返回最后的值,若key不存在,則返回默認值。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM