繁体   English   中英

Django 当 FileField 设置为必需时,form.is_valid 返回 false

[英]Django form.is_valid returns false when a FileField is set to required

所以我正在尝试使用 FileField 在 Django 中创建一个表单。
我的 forms.py 看起来像这样:

from django import forms

class WordcloudForm(forms.Form):
    matrix = forms.FileField(required=True)
    min = forms.IntegerField(required=False)
    max = forms.IntegerField(required=False)
    # mask = forms.FileField(required=False)

我希望 FileField 成为必填字段。
意见.py:

def form(request):
    if request.method == 'POST':
        form = WordcloudForm(request.POST)
        print(form.is_valid)
        if form.is_valid():
            if 'matrix' in request.FILES:
                uploaded_matrix = request.FILES['matrix']
                print(uploaded_matrix.name, uploaded_matrix.size)
        min = form.cleaned_data['min']
        max = form.cleaned_data['max']
        print('min',min,'max',max)
        print(form.errors)

forms.py中forms.FileField(required = True)时,form.is_valid()返回false:
必填=真

forms.FileField(required=False)在forms.py中,form.is_valid()返回true:
必填=假
当我提交带有forms.FileField(required = True)的表单时,我的print(form.errors)声明:“此字段是必需的”,即使我确实添加了一个文件。

我尝试了不同的文件格式以确保问题不仅仅发生在我用于测试的图像上。
我错过了什么?

文档中所述,您需要在启动表单实例时将request.POST request.FILES传递:

if request.method == 'POST':
    form = WordCloudForm(request.POST, request.FILES)
    if form.is_valid():
        # rest of the code

另外请将您的视图方法从form重命名为任何有意义的名称,因为您在方法中有一个名为form的变量。 与变量minmax的命名相同,它们与 python 的minmax函数冲突。 您的 IDE 已经在标记它们了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM