Django表单FileField无法通过验证

时间:2015-03-19 10:10:17

标签: python django forms 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表单字段旁边。

这里有什么问题?我错过了任何一般的Django设置,如MEDIA文件存储等等吗?在这个阶段,当我无法验证表格时,它是否甚至是必要的?

非常感谢 TC

1 个答案:

答案 0 :(得分:1)

好的 - 这和我一样愚蠢。我有两个不同的应用程序,每个应用程序都有自己的模板子目录。我认为Django首先在相关目录中使用那个,当它没有被发现时,它会进入项目级别。

但它并没有这样做。所以我有两个用于打印简单表单的base.html模板,但是唯一的第一个模板总是被调用,而且它没有 enctype =&#34; multipart / form-data&#34; < / em>

这就是它。回去学习基本的Django原则; - )