2015-03-19 99 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