伺服器接收到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預設使用本地的記憶體作...