【问题标题】:Django form FileField can't pass a validationDjango 表单 FileField 无法通过验证
【发布时间】:2015-05-22 09:34:16
【问题描述】:

我看到很多类似的问题,但找不到任何答案。我只需要使用 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

【问题讨论】:

    标签: python django forms filefield


    【解决方案1】:

    好吧 - 像往常一样,这是我自己的愚蠢。我有两个不同的应用程序,每个应用程序都有自己的模板子目录。我认为 Django 首先在相关目录中使用该目录,当找不到它时,它会转到项目级别。

    但它不是这样工作的。所以我有两个用于打印简单表单的 base.html 模板,但唯一的第一个总是被调用并且它没有 enctype="multipart/form-data"

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

    【讨论】:

    • ahah.. 过去发生在我身上......这就是我第一次看到的:如果你有 enctype="multipart/form-data" :D
    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    相关资源
    最近更新 更多