詳解Django中Request物件的相關用法

2021-08-01 14:17:41 字數 4370 閱讀 1362

這篇文章主要介紹了詳解django中request物件的相關用法,django是python重多人氣框架中最著名的乙個,需要的朋友可以參考下

從request物件中獲取資料

我們在第三章講述view的函式時已經介紹過httprequest物件了,但當時並沒有講太多。 讓我們回憶下:每個view函式的第乙個引數是乙個httprequest物件,就像下面這個hello()函式:

httprequest物件,比如上面**裡的request變數,會有一些有趣的、你必須讓自己熟悉的屬性和方法,以便知道能拿它們來做些什麼。 在view函式的執行過程中,你可以用這些屬性來獲取當前request的一些資訊(比如,你正在載入這個頁面的使用者是誰,或者用的是什麼瀏覽器)。

url相關資訊

httprequest物件包含當前請求url的一些資訊:

在view函式裡,要始終用這個屬性或方法來得到url,而不要手動輸入。 這會使得**更加靈活,以便在其它地方重用。 下面是乙個簡單的例子:

有關request的其它資訊

request.meta 是乙個python字典,包含了所有本次http請求的header資訊,比如使用者ip位址和使用者agent(通常是瀏覽器的名稱和版本號)。 注意,header資訊的完整列表取決於使用者所傳送的header資訊和伺服器端設定的header資訊。 這個字典中幾個常見的鍵值有:

注意,因為 request.meta 是乙個普通的python字典,因此當你試圖訪問乙個不存在的鍵時,會觸發乙個keyerror異常。 (http header資訊是由使用者的瀏覽器所提交的、不應該給予信任的「額外」資料,因此你總是應該好好設計你的應用以便當乙個特定的header資料不存在時,給出乙個優雅的回應。)你應該用 try/except 語句,或者用python字典的 get() 方法來處理這些「可能不存在的鍵」:

我們鼓勵你動手寫乙個簡單的view函式來顯示 request.meta 的所有資料,這樣你就知道裡面有什麼了。 這個view函式可能是這樣的:

做為乙個練習,看你自己能不能把上面這個view函式改用django模板系統來實現,而不是上面這樣來手動輸入html**。 也可以試著把前面提到的 request.path 方法或 httprequest 物件的其它方法加進去。

django中的filter詳解

我們很少會一次性從資料庫中取出所有的資料 通常都只針對一部分資料進行操作。在django api中,我們可以使用 filter 方法對資料進行過濾 publisher.objects.filter name apress filter 根據關鍵字引數來轉換成 where sql語句。前面這個例子 相...

Django中的Ajax詳解

ajax asynchronous j ascript and xml 翻譯成中文就是 非同步j ascript和xml 即使用j ascript語言與伺服器進行非同步互動,傳輸的資料為xml 當然,傳輸的資料不只是xml 同步互動 客戶端發出乙個請求後,需要等待伺服器響應結束後,才能發出第二個請求...

volley中多級別取消請求Request

activity裡面啟動了網路請求,而在這個網路請求還沒返回結果的時候,activity被結束了,此時如果繼續使用其中的context等,除了無辜的浪費cpu,電池,網路等資源,有可能還會導致程式crash,所以,我們需要處理這種一場情況。使用volley的話,我們可以在activity停止的時候,...