【发布时间】:2016-05-11 05:32:41
【问题描述】:
我正在尝试保存使用requests 下载的图像,然后在模型中使用Pillow 编辑到ImageField。但是对象是在没有图像的情况下创建的。
这就是我所拥有的:
settings.py
MEDIA_ROOT = BASE_DIR + "/media/"
MEDIA_URL = MEDIA_ROOT + "/magicpy_imgs/"
models.py
def create_path(instance, filename):
path = "/".join([instance.group, instance.name])
return path
class CMagicPy(models.Model):
image = models.ImageField(upload_to=create_path)
....
# Custom save method
def save(self, *args, **kwargs):
if self.image:
image_in_memory = InMemoryUploadedFile(self.image, "%s" % (self.image.name), "image/jpeg", self.image.len, None)
self.image = image_in_memory
return super(CMagicPy, self).save(*args, **kwargs)
forms.py
class FormNewCard(forms.Form):
imagen = forms.URLField(widget=forms.URLInput(attrs={'class': 'form-control'}))
views.py
def new_card(request):
template = "hisoka/nueva_carta.html"
if request.method == "POST":
form = FormNewCard(request.POST)
if form.is_valid():
url_image = form.cleaned_data['imagen']
group = form.cleaned_data['grupo']
name = form.cleaned_data['nombre']
description = form.cleaned_data['descripcion']
answer = requests.get(url_image)
image = Image.open(StringIO(answer.content))
new_image = image.crop((22, 44, 221, 165))
stringio_obj = StringIO()
try:
new_image.save(stringio_obj, format="JPEG")
image_stringio = stringio_obj.getvalue()
image_file = ContentFile(image_stringio)
new_card = CMagicPy(group=group, description=description, name=name, image=image_file)
new_card.save()
finally:
stringio_obj.close()
return HttpResponse('lets see ...')
它创建对象但没有图像。请帮忙。我已经尝试解决这个问题好几个小时了。
【问题讨论】: