1. 選擇性別:
1)更新login.html模板
2)views.py中獲取客戶端提交的數據
3)當選擇性別為“男”后,后台得到了gender=1.
2.選擇愛好,可以多選,所以后台會獲得多個數據。
radio單個數據的獲取方法: v1=request.POST.get('gender')
checkbox多個數據的獲取方法: v2=request.POST.getlist('favor')
1)更新login.html模板

2)views.py中獲取客戶端提交的數據
3)當選擇愛好為“籃球,讀書”后,后台得到了favor=11,22兩個值。
3. select標簽,默認是單選,也可以多選。不同的方法對應不同的獲取函數
4. 上傳文件
4.1 發現用get的方法只獲取到了文件名,卻不見文件的內容。其實文件內容沒有放到POST里面,而是放到了FILES里面。
本質:上傳的時候,所有的內容都上傳到了FILES里面了,request.POST.get 只是到FILES里面把文件名取出來了,而沒有提取文件內容。
4.2
在form表單中上傳的有兩類數據,
一類是普通數據(字符串),所有數據將在POST里面得到。
一類是文件,form表單中要加上:enctype="multipart/form-data", 表示上傳的是文件。所有數據將在FILES中得到。
拿到的是類的對象,看起來像是個文件名,可以打印一下它的數據類型。
4.3 拿到文件后保存在服務器上,完成上傳的功能。服務器端取數據的時候是分塊取的,chunks(中文:塊)就是一塊一塊的集合。
上傳文件是一點一點上傳的,取數據也是一點一點取的。f=open(obj.name,mode='wb'), 打開一個與上傳文件同名的文件,把上傳的文件寫入進來。
修改views.py程序如下:
運行結果,上傳成功。
4.4 把上傳的文件都放到upload文件夾里面。
新建1個upload文件夾
插播一下os.path.join的 用法
os.path模塊主要用於文件的屬性獲取,
os.path模塊主要用於文件的屬性獲取. os.path.join(path1[, path2[, ...]]) 將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略。 >>> os.path.join('c:\\', 'csv', 'test.csv') 'c:\\csv\\test.csv' >>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv') 'c:\\csv\\test.csv' >>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c') '/home/aa/bb/c'
修改views.py
運行結果,上傳成功,並且上傳到了指定的upload路徑下面
客戶端發送請求到服務器端,內容包含請求頭,請求尾,請求的內容。
表單是表單,文件是文件。表單的數據全部提取到POST里面,文件的內容會全部提取到FILES里面,所以調用的時候會分開。