Django獲取多個數據及文件上傳


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里面,所以調用的時候會分開。

 


免責聲明!

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



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