![](/img/trans.png)
[英]Why does this Django form complain “this field is required” for an image field?
[英]Django: Why does my image field form not validate?
我有这个模型:
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 %}
我能发现的第一件事是您的 HTML form
标签上缺少enctype="multipart/form-data"
。 没有它,您将无法通过表单上传文件(包括图像)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.