django中的HttpReques物件

2021-09-13 03:13:00 字數 3470 閱讀 2559

伺服器接收到http協議的請求後,會根據報文建立httprequest物件

檢視函式的第乙個引數是httprequest物件

在django.http模組中定義了httprequest物件的api

屬性

下面除非特別說明,屬性都是唯讀的

path:乙個字串,表示請求的頁面的完整路徑,不包含網域名稱

method:乙個字串,表示請求使用的http方法,常用值包括:『get』、『post』

encoding:乙個字串,表示提交的資料的編碼方式

如果為none則表示使用瀏覽器的預設設定,一般為utf-8

這個屬性是可寫的,可以通過修改它來修改訪問表單資料使用的編碼,接下來對屬性的任何訪問將使用新的encoding值

get:乙個類似於字典的物件,包含get請求方式的所有引數

post:乙個類似於字典的物件,包含post請求方式的所有引數

files:乙個類似於字典的物件,包含所有的上傳檔案

cookies:乙個標準的python字典,包含所有的cookie,鍵和值都為字串

session:乙個既可讀又可寫的類似於字典的物件,表示當前的會話,只有當django 啟用會話的支援時才可用,詳細內容見「狀態保持」

方法

is_ajax():如果請求是通過xmlhttprequest發起的,則返回true

querydict物件

定義在django.http.querydict

request物件的屬性get、post都是querydict型別的物件

與python字典不同,querydict型別的物件用來處理同乙個鍵帶有多個值的情況

方法get():根據鍵獲取值

只能獲取鍵的乙個值

如果乙個鍵同時擁有多個值,獲取最後乙個值

dict.get('鍵',default)
或簡寫為

dict['鍵']
方法getlist():根據鍵獲取值

將鍵的值以列表返回,可以獲取乙個鍵的多個值

dict.getlist('鍵',default)
get屬性

querydict型別的物件

包含get請求方式的所有引數

與url請求位址中的引數對應,位於?後面

引數的格式是鍵值對,如key1=value1

多個引數之間,使用&連線,如key1=value1&key2=value2

鍵是開發人員定下來的,值是可變的

示例如下

建立檢視gettest1用於定義鏈結,gettest2用於接收一鍵一值,gettest3用於接收一鍵多值

def gettest1(request):

return render(request,'booktest/gettest1.html')

def gettest2(request):

return render(request,'booktest/gettest2.html')

def gettest3(request):

return render(request,'booktest/gettest3.html')

配置url

url(r'^gettest1/$', views.gettest1),

url(r'^gettest2/$', views.gettest2),

url(r'^gettest3/$', views.gettest3),

建立gettest1.html,定義鏈結

gettest2

gettest3

完善檢視gettest2的**

def gettest2(request):

a=request.get['a']

b=request.get['b']

context=

return render(request,'booktest/gettest2.html',context)

建立gettest2.html,顯示接收結果

a:}

b:}

完善檢視gettest3的**

def gettest3(request):

a=request.get.getlist('a')

b=request.get['b']

context=

return render(request,'booktest/gettest3.html',context)

建立gettest3.html,顯示接收結果

a:

}b:}

post屬性

querydict型別的物件

包含post請求方式的所有引數

與form表單中的控制項對應

問:表單中哪些控制項會被提交?

答:控制項要有name屬性,則name屬性的值為鍵,value屬性的值為鍵,構成鍵值對提交

對於checkbox控制項,name屬性一樣為一組,當控制項被選中後會被提交,存在一鍵多值的情況

鍵是開發人員定下來的,值是可變的

示例如下

–定義檢視posttest1

def posttest1(request):

return render(request,'booktest/posttest1.html')

配置url

url(r'^posttest1$',views.posttest1)
建立模板posttest1.html

建立檢視posttest2接收請求的資料

def posttest2(request):

uname=request.post['uname']

upwd=request.post['upwd']

ugender=request.post['ugender']

uhobby=request.post.getlist('uhobby')

context=

return render(request,'booktest/posttest2.html',context)

配置url

url(r'^posttest2$',views.posttest2)
建立模板posttest2.html

}}}

}

注意:使用表單提交,注釋掉settings.py中的中介軟體crsf

django基礎 django中的app應用

urlpatterns path lw2 views.lw2 先設定子路由和乙個實現登入功能頁面 login.html 使用者名稱 密碼 通過request.post.get 方法可以返回使用者登入時的資訊,根據資訊來判斷和進行下一事件。如果登入資訊與資料庫中資訊不相匹配,則重新返回新的登入頁面。此...

django 重新整理快取 Django 中的快取問題

django 中的快取問題 簡單介紹 在動態 中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.當乙個 的使用者訪問量很大的時候,每一次的的後台操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.快取是將一些常用...

django中的快取

快取的基本過程 1 給定乙個url,檢查頁面是否存在快取 2 如果存在,返回快取的頁面 3 如果不存在,生成該頁面,把生成的頁面儲存在快取中 django中,可以將某個檢視函式的輸出快取,也可以快取某個部分 使用快取,需要在setting.py中的caches配置,django預設使用本地的記憶體作...