2015-03-19 100 views
1

我看到很多類似的問題,但找不到任何答案。我只需要簡單地上傳或使用Django FileField處理文件。以下是我有:Django格式FileField無法通過驗證

forms.py

class UploadForm(forms.Form): 
    packet_file = forms.FileField() 

base.html文件

<form action="process" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
    {{ form.as_p }} 

views.py

def index(request): 

    form = UploadForm() # An unbound form 
    return render(request, 'base.html', {'form': form}) 

def process(request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = UploadForm(request.POST, request.FILES) # A form bound to the POST data 
     if form.is_valid(): 

所以index()處理空表單的初始渲染。當我填寫它,它進入process()它始終返回

此字段是必填項。

在FileField表單字段旁邊。

這裏有什麼問題?我是否缺少像MEDIA文件存儲等任何常規Django設置?當我無法驗證表單時,是否有必要在這個階段?

非常感謝 TC

回答

1

確定 - 這是我自己的愚蠢如常。我有兩個不同的應用程序,每個應用程序都有自己的模板子目錄。我以爲Django首先在相關的目錄中使用這個目錄,當它沒有被發現時它會進入項目級別。

但它不這樣工作。所以我有兩個base.html模板打印簡單的表格,但唯一的第一個總是被稱爲,它沒有enctype =「multipart/form-data」

就這樣。回去學習基本的Django原則;-)

+0

ahah ..過去發生在我身上......這就是我第一次看到的:如果你有enctype =「multipart/form-data」:D – brunofitas 2015-03-19 11:20:12