【发布时间】:2012-09-20 14:40:40
【问题描述】:
我想根据ImageField 的值获取CharField 的值。我的表单和视图定义为:
#Form
class GpsImForm(forms.Form):
image = forms.ImageField(required=True)
gps_data = forms.CharField(required=True)
#View
def gpsim_gen_view(request):
if request.method == 'POST':
form = GpsImForm(request.POST, request.FILES)
if 'image' in request.FILES:
im = request.FILES['image']
i = Image.open(im)
... # functions to extract exif data from i
request.POST.update({ 'gps_data': ...}) # set gps_data based on exif data from i
if form.is_valid():
obj = form.save()
return ... #returns the gpsim
else:
form = GpsImForm()
return direct_to_template(request, 'gpsim_generate.html', {'form': form,})
gps_data 已更新,但是,一旦我使用 Image.open(),就会收到以下错误消息:
上传一张有效的图片。您上传的文件不是图片或损坏的图片。
如果我评论有关i 的行并将gps_data 修改为任何内容,则表单(带有图像)将被保存而没有任何错误...
# i = Image.open(im)
# ...
# functions to extract exif data from i
request.POST.update({ 'gps_data': 'some text'}) # set gps_data to 'test'
【问题讨论】:
-
你尝试过什么类型的图片?在不支持 jpeg 的情况下安装 PIL 是一个常见问题,在这种情况下,您需要卸载 PIL,安装 libjpeg,然后重新安装 PIL。
-
真的,问题不在于 libjpeg。正如问题最后所说,当我不使用 Image.open() 时,表单(带有图像)被保存而没有任何错误。无论如何谢谢:-)
-
您的问题听起来和这个类似,所以我正在检查您是否尝试过其他文件类型:stackoverflow.com/questions/1398701/…
标签: python django django-forms django-views python-imaging-library