天天看點

django 快速實作檔案上傳

前言

  對于web開來說,使用者登陸、注冊、檔案上傳等是最基礎的功能,針對不同的web架構,相關的文章非常多,但搜尋之後發現大多都不具有完整性,對于想學習web開發的新手來說就沒辦法一步一步的操作練習;對于web應用來說,包括資料庫的建立,前端頁面的開發,以及中間邏輯層的處理三部分。

  本系列以可操作性為主,介紹如何通過django web架構來實作一些簡單的功能。每一章都具有完整性和獨立性。使用新手在動手做的過程中體會web開發的過程,過程中細節請參考相關文檔。

本操作的環境:

===================

deepin linux 2013(基于ubuntu)

python 2.7

django 1.6.2

建立項目與應用                                                                                                              

 目錄結構如下:

django 快速實作檔案上傳

打開mysite2/mysite2/settings.py檔案,将disk應用添加進去:

設計model(資料庫)                                                                          

打開mysite2/disk/models.py檔案,添加如下内容

建立兩個字段,username 使用者存放使用者名,headimg 使用者存放上傳檔案的路徑。

下面進行資料庫的同步

最後生成的 disk_user 表就我是我們models.py 中所建立的類。django 提供了他們之間的對應關系。

建立視圖                                                                                                

1、打開mysite2/disk/views.py 檔案

2、建立注冊頁面

先在mysite2/disk/目錄下建立templates目錄,接着在mysite2/disk/templates/目錄下建立register.html 檔案:

3、設定模闆路徑

打開mysite2/mysite2/settings.py檔案,在底部添加:

4、設定url

5、啟動服務

6、通路http://127.0.0.1:8000/disk/

django 快速實作檔案上傳

注冊頁面可以正常打開說明整個過程已經走通。這也是django開發的基本套路。讀者一定要熟練了解這個基本套路。

完善表單送出                                                                                             

  

  通過上面的過程,我們隻是把過程串了起來,細心你一定發現,我們的register.html 檔案,并沒有建立使用者送出的表單,views.py檔案中也并沒有對使用者送出的資訊做處理。下面我們就針對這兩個檔案進一步的補充。

打開mysite2/disk/templates/register.html 檔案:

打開mysite2/disk/views.py 檔案:

再次重新整理http://127.0.0.1:8000/disk/ 頁面

django 快速實作檔案上傳

填寫使用者名,選擇本地上傳檔案,點選“ok”

django 快速實作檔案上傳

抛出一個錯誤,這個錯誤比較友好,是以不是我們操作過程中的小錯誤。

打開mysite2/mysite2/settings.py檔案,将下面一行代碼注釋:

再次重新整理http://127.0.0.1:8000/disk/ 頁面,我們就可以正常将使用者名和檔案送出了!

django 快速實作檔案上傳

将資料寫入資料庫                                                                                 

雖然已經實作了資料的送出,但使用者名與檔案并沒有真正的寫入到資料庫。我們來進一步的完善mysite2/disk/views.py 檔案:

再次重新整理http://127.0.0.1:8000/disk/ 頁面,完成檔案的上傳。

django 快速實作檔案上傳

在項目的目錄下,我們居然發現了使用者送出的檔案。

django 快速實作檔案上傳

那資料庫中儲存的是什麼呢?

通過檢視資料庫發現,我們資料庫中存放的并非使用者上傳的檔案本身,而是檔案的存放路徑。

ok ,你可以在此基礎上繼續擴充,例如使用者送出成功後,将使用者名上傳的檔案名顯示出來,或為上傳頁面加一個漂亮的樣式等。