2013-04-17 104 views
1

我正在尋找一種方法來從使用Django構建的網頁上傳文件,但使用django表格的而不是,即from django import formsDjango中的文件上傳

爲什麼?只是因爲我無法理解爲什麼我們需要這樣的事情。我很確定可以處理通過表單上傳的文件,就像我們可以處理通過表單提交的其他POST數據一樣。請注意,如果有人能告訴我背後使用django表單的邏輯,我將不勝感激。 謝謝!

回答

0

每文檔:https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.FILES

如果請求包含文件上傳,request.FILES將包含讓你讀你從客戶端接收數據UploadedFile的類的實例。


一般來說,你應該使用Django的形式,因爲它們更簡單地維持依賴這些表單和視圖。當然,如果你的表單只包含一個字段,它可能看起來像是過度殺傷,但不用擔心,最終這個雙線程遠遠小於(因此更容易維護)自定義表單驗證和清理永遠是。

最大的利潤是關注點的分離:因爲你的表單是單獨的類,它可以被多個視圖重用,它也可以使用Python的繼承容易地擴展,並且它可以從視圖單獨測試。

由於所有表單的創建和驗證邏輯都位於其他地方,因此它的工作方式也相反。

一旦你學習了表單API,編寫表單Django方式最終會比直接從視圖中處理request.POST更快更簡單。 Django表單處理傳入的數據,並執行基本的清理和驗證以及類型強制。如果沒有他們,你將不得不花時間爲自己的表單清理,驗證和錯誤處理編寫樣板文件。

當數據驗證和清理髮生時,Django Forms還提供了將額外代碼掛鉤到表單的「鉤子」,允許您在字段接收值時執行額外的操作。甚至還有model.Form,它允許您從模型生成表單,爲您節省更多時間。

由於Django表單您可以專注

雖然我們在這,你也應該有一個閱讀以下內容: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/ https://docs.djangoproject.com/en/dev/topics/http/decorators/#django.views.decorators.http.require_POST

這些都是mustknow是爲了讓您的形式從基本安全各種攻擊。