Django: 为什么我的图片字段表单不通过验证?

1 投票
1 回答
630 浏览
提问于 2025-04-20 11:00

我有一个模型:

fs = FileSystemStorage(location='/var/tmp/media/uploads/photos')

class Picture(models.Model):
  """ vom user hochgeladenes bild """
  image_field = models.ImageField(storage=fs)
  user = models.ForeignKey('auth.User')

还有一个表单:

class PictureForm(ModelForm):
  class Meta:
    model = Picture
    fields = ['user','image_field',]

但是当我尝试验证的时候,它不工作!

class PictureAddView(View):
  def get(self,request):
    picture_form = PictureForm()
    context = {'picture_form': picture_form,}
    return render(request, 'picturevault/picture_add.html', context)
  def post(self,request):
    from PIL import Image
    Image.init()
    picture_form = PictureForm(request.POST,request.FILES)
    if picture_form.is_valid():
      messages.add_message(request, messages.SUCCESS, 'picture link form valid')
    else:
      messages.add_message(request, messages.ERROR, 'picture link form invalid')
    return HttpResponseRedirect(reverse('picturevault_picture_add_view'))

你能找到错误吗?

我得到的结果是“图片链接表单无效”,这意味着它没有通过“picture_form.is_valid()”。

这是模板:

{% extends 'base.html' %}

{% block content %}
<form method="POST" action="" >
{% csrf_token %}
{% for field in picture_form %}
  {{ field }}
{% endfor %}
<input type="submit" value="submit" />
</form>
{% endblock %}

1 个回答

3

我首先注意到的是,你的HTML form 标签里缺少了 enctype="multipart/form-data" 这个属性。没有这个属性,你就无法通过表单上传文件(包括图片)。

撰写回答