2011-07-19 65 views
2

首次發佈問題。我基本上是複製的一切,我在這裏和Django文檔網站上發現,我不能找出我在做什麼錯誤使用Django進行文件上傳:無效表格

這裏是我的views.py文件中的代碼

from django import forms 

class UploadFileForm(forms.Form): 
    title = forms.CharField(max_length=50) 
    file = forms.FileField() 

def upload_file(request): 
    form = UploadFileForm(request.POST, request.FILES) 
    if form.is_valid(): 
     response = "Form is valid."    
    else: 
     response = "Failed to upload attachment." 
    return HttpResponse(response) 

而我的HTML文件:

<form name="attachmentForm" action="http://mysite.com/uploadattachments" enctype="multipart/form-data" method="post"> 
     <p> 
    Please specify a file, or a set of files:<br/> 
    <input id="attachment" type="file" name="datafile" size="40"/> 
     </p> 
     <input type="submit" value="Send"/> 
    </form> 

當我測試一下我得到「無法上傳附件」。有什麼顯而易見的,我在這裏失蹤?我對django也有點新意,所以我很抱歉,如果這只是一個愚蠢的錯誤。 在此先感謝!

回答

1

不能完全確定這一點,但我猜,因爲你已經命名的表單字段file並在UploadFileForm類的定義title,你的表單字段的HTML中name屬性必須匹配,即文件上傳字段必須被命名爲「文件」,並且還必須有「標題」字段。

我建議檢出https://docs.djangoproject.com/en/dev/topics/forms/,其中有自動或半自動呈現表單的示例。一旦你使用自動渲染的表單工作,你可以根據自己的需要進行自定義。

+0

感謝您的回覆。我嘗試改變名稱以使它們匹配,但它仍然給我同樣的迴應。我也瀏覽了django網站上的例子,並且讓代碼變得非常愚蠢和簡單,但它仍然沒有通過form.is_valid()test – Alexandra

+0

在你的提示和示例之間找到了它。使名字匹配確實解決了問題的一部分。 – Alexandra