Django从URL保存图像并与ImageField连接 [英] Django save image from url and connect with ImageField

查看:739
本文介绍了Django从URL保存图像并与ImageField连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 models.py 中:

class Item(models.Model):
    image_file = models.ImageField(upload_to='images')
    image_url = models.URLField()

我想要django自动下载并从 image_url 本地保存图像,并将其与 image_file

I want django automatically download and locally save image from image_url and "connect" it with image_file

应该采取的行动:


  1. 我将 https://docs.djangoproject.com/s/img/site/hdr_logo.gif
    粘贴到 image_url

  2. 点击保存

  3. 在模板中写入< img src = {{item.image_file.url}}> 。它显示从我的服务器
    图像,而不是 djangoproject.com

  1. I Paste https://docs.djangoproject.com/s/img/site/hdr_logo.gif into image_url field in admin
  2. Click "save"
  3. In templates write <img src="{{ item.image_file.url }}">. It shows image from my server, not djangoproject.com

我尝试过的内容

我已经覆盖 save code>项目类。我通过 urllib 在本地保存图像,但是我被卡在连接这个保存的图像与 image_file 字段

I've overwritten save method of Item class. I saved image locally via urllib, but I am stuck on connecting this saved image with image_file field

推荐答案

from django.core.files import File
import os

class Item(models.Model):
    image_file = models.ImageField(upload_to='images')
    image_url = models.URLField()

...

def get_remote_image(self):
    if self.image_url and not self.image_file:
        result = urllib.urlretrieve(self.image_url)
        self.image_file.save(
                os.path.basename(self.image_url),
                File(open(result[0]))
                )
        self.save()

您可以覆盖默认的save()方法来自动调用get_remote_image()。

You can override the default save() method to automatically invoke get_remote_image().

请参阅: https://docs.djangoproject.com/en/dev /托皮cs / db / models /#overriding-model-methods

这篇关于Django从URL保存图像并与ImageField连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆