上传图片后,获取“字段名称为必填项”

时间:2018-07-31 12:09:28

标签: python django

当我提交表单时将图像上传到表单后,它仍然显示“必填字段”错误 在models.py中:

 class Members(models.Model):
     image=models.ImageField(upload_to="images/",default='')

forms.py:

 class CreateOne(forms.Form):
     image=forms.ImageField(required=True)

在create.html中:

  <form class="form-inline"  action="create" method="POST" 
         enctype="multipart/form-data" novalidate>

在views.py中:

 def create(request):
     member = Members(image=request.FILES['image'])
     if request.method == 'POST':
         form = forms.CreateOne(request.POST)
         if form.is_valid():            
            member.save()
         return redirect('/')
     else:
        form = CreateOne()

1 个答案:

答案 0 :(得分:1)

我认为您了解错误使用Form的方式。这种Form的想法是在您编写some_form.save()时进行更改(例如,创建模型实例并将其保存到数据库中)。

由于大多数形式(可能与此形式类似)都与单个模型相关,因此Django具有ModelForm,它提供了更多便利:

class CreateOne(forms.ModelForm):
    image=forms.ImageField(required=True)

    class Meta:
        model = Members
        fields = ['image']

然后,我们可以使用以下方法创建一个视图,该视图将创建一个实例:

def create(request):
    if request.method == 'POST':
        form = forms.CreateOne(request.POST, request.FILES)
        if form.is_valid():            
            form.save()
            return redirect('/')
    else:
        form = CreateOne()
    return render(request, 'some_template.html', {'form': form}

form 无效的情况下,您可能还想 not 进行重定向,因为从那时起,您可能希望向用户提供以下形式的反馈:无效(并显示相应的错误)。