如何處理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窗體和many2many.through字段
- 2. 帶有窗體的大文件大小?
- 3. 在Django窗體中的字段順序
- 4. Django基於多個字段驗證表單(文件字段)
- 5. 設置窗體字段值django
- 6. Django m2m窗體出現字段
- 7. Rails窗體文本字段
- 8. 哪個Django模型字段帶有CheckboxSelectMultiple表單字段?
- 9. Django的預填充字段帶有連
- 10. 具有多個值和多個所有者的Django字段
- 11. Django在一個字段中的多個文件
- 12. Django窗體與來自兩個不同模型的字段
- 13. django帶窗口小部件的動態窗體
- 14. 帶有兩個密碼字段的窗體上的自動完成
- 15. 在帶有窗體的Django模板中,如何顯示不是特定於某個字段的錯誤?
- 16. 帶有多個文本字段的NS謂詞
- 17. Unicode到一個帶有JavaScript的窗體
- 18. 多部分窗體不接收字段
- 19. Django窗體 - 設置用戶名字段等於電子郵件字段
- 20. 只有一個BooleanField的Django窗體
- 21. Django窗體不顯示名稱和電子郵件字段
- 22. 更改多個窗體大小Django Bootstrap
- 23. Perl解析帶有一個或多個字段的字符串
- 24. Django窗體中的奇怪行爲(只讀字段/窗口小部件)
- 25. 帶有多個鏈接過濾器的未綁定子窗體?
- 26. 上傳多個圖像以及單個窗體中的文本字段php
- 27. 從主窗體字段自動填充子窗體字段
- 28. Windows窗體 - 包括帶有另一個窗口的窗口
- 29. 如何使用Wicket從一個窗體發送多個字段?
- 30. 帶有Firebase多媒體文件的Android媒體播放器
它不工作,我這樣做就像這樣。 '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