如何處理Django中的多個文件字段。例如,如果我只有一個表單域,我會將request.FILES ['file']傳遞給一個處理函數。但是當有更多的文件時,怎麼走?帶有多個文件字段的Django窗體
回答
request.FILES.get('filename', None)
響應一個表單指定字段的存在是這樣的:
<input type="file" name="filename"></input>
如果你有兩個這樣的領域:
<input type="file" name="file1"></input>
<input type="file" name="file2"></input>
然後request.FILES.get('file1', None)
和request.FILES.get('file2', None)
應該分別給你的那些文件。
原因是多部分MIME。應該上傳三個部分(表單數據,file1,file2),Django的UploadFileHandler分別將其拆分爲request.POST
和request.FILES
。
我遲到了,但我一直試圖弄清楚這一點,終於有了一個解決方案。 查看此處使用的代碼:https://code.djangoproject.com/ticket/12446
您可以使用getlist訪問多部分值。如果我的HTML的形式是:
<form enctype="multipart/form-data" action="" method="post">
<input type="file" name="myfiles" multiple>
<input type="submit" name="upload" value="Upload">
</form>
我的Django代碼來處理它看起來像:
for afile in request.FILES.getlist('myfiles'):
# do something with afile
寫一個表單字段/小工具來處理這個正確的是我的下一個步驟。我對使用Django還比較陌生,所以我正在學習。
你是怎麼做到的?你能舉個例子嗎?我希望藝術家用戶以同一形式同時上傳多個文件。 – 2014-07-25 06:10:29
這是這個答案的好鏈接:https://github.com/Chive/django-multiupload。但是,由於我沒有使用ModelForm,所以我不得不做一些改變。 鑑於我寫下面的代碼和保存的文件到磁盤:
for each in form.cleaned_data['attachments']:
handle_uploaded_file(each)
def uploadMyWork(request):
from .forms import UploadFileForm, handle_uploaded_file
print 'in uploadMyWork'
if request.method == 'GET':
print 'in uploadMyWork : GET'
form = UploadFileForm()
else:
form = UploadFileForm(request.POST, request.FILES)
print 'in uploadMyWork : POST'
#for each in form.cleaned_data['attachments']:
# handle_uploaded_file(each)
#return render(request, 'stitchme/uploadMyWork.html', {'msg': "file uploaded successfully"})
if form.is_valid():
print 'inside form valid'
for each in form.cleaned_data['attachments']:
handle_uploaded_file(each)
return render(request, 'stitchme/uploadMyWork.html', {'msg': "file uploaded successfully"})
print 'returning to uploadmywork'
return render(request, 'stitchme/uploadMyWork.html', {'form': form, 'msg':'hi'})
- 1. Django窗體需要更多字段
- 2. 多個Django窗體
- 3. Django窗體和many2many.through字段
- 4. 帶有多個按鈕的窗體
- 5. Django窗體與一個太多的字段
- 6. php - 命名窗體上的多個文件輸入字段
- 7. 帶有文本字段的Symfony窗體內嵌收音機
- 8. 帶有窗體的大文件大小?
- 9. 在Django窗體中的字段順序
- 10. django datepickup窗體部件只能在一個字段上工作
- 11. 在窗體中使用帶有多個條件的Dlookup
- 12. Django基於多個字段驗證表單(文件字段)
- 13. Django窗體與__init__不清潔字段
- 14. Django窗體繼承 - 更改字段
- 15. Django窗體,動態驗證字段
- 16. 設置窗體字段值django
- 17. Rails窗體文本字段
- 18. 哪個Django模型字段帶有CheckboxSelectMultiple表單字段?
- 19. Django的預填充字段帶有連
- 20. 是否有一個Django的選擇選擇窗體小部件,允許一個可選的文本字段
- 21. 具有多個值和多個所有者的Django字段
- 22. Django在一個字段中的多個文件
- 23. django帶窗口小部件的動態窗體
- 24. Django窗體與來自兩個不同模型的字段
- 25. 帶有兩個密碼字段的窗體上的自動完成
- 26. 在帶有窗體的Django模板中,如何顯示不是特定於某個字段的錯誤?
- 27. Unicode到一個帶有JavaScript的窗體
- 28. 帶有多個文本字段的NS謂詞
- 29. Django:驗證多個字段
- 30. 只有一個BooleanField的Django窗體
它不工作,我這樣做就像這樣。 'newsform = NewsAddForm(request.POST or None,request.FILES.get('image_news1',None),request.FILES.get('image_news2',None))' – Aryan 2016-09-23 05:51:24