【发布时间】:2020-10-08 13:38:07
【问题描述】:
我想通过 URL 加载图像,但只有 URL 本身保存到模型中,如何指定保存到媒体文件夹的路径,以及如何保存?
from django.db import models
import urllib.request
from urllib.parse import urlparse
upload_path = 'media/'
class Image(models.Model):
image = models.ImageField(upload_to=upload_path, null= True, blank=True)
image_url = models.URLField(blank=True, null=True)
def get_image(self):
name = urlparse(str(self.image)).path.split('/')[-1]
urllib.request.urlretrieve(str(self.image_url), 'img\media\media' + name + '.jpg')
【问题讨论】:
-
不,不仅将 URL 保存到模型中。
ImageField保存 文件路径,并将对象保存在MEDIA_ROOT中。但是,这确实行不通,因为您基本上要求下载一个已经在 in 您的媒体目录中的文件。 -
@messageman 上传代码截图通常是不好的。相反,您应该将代码复制/粘贴到问题中。在前面使用 4 个空格使其格式为代码。这将允许搜索引擎根据代码进行索引,并允许其他人复制/粘贴您的代码。请更新您的问题
-
函数的签名看起来不正常。通常它应该接受一个参数
url,指定从where 获取项目。通过使用image.url,您可以获得已经存在的图像的网址(如果存在),因此在最好的情况下,您可以从自己的网络服务器下载图像。 -
@J'e 上传到 pastebin
-
@WillemVanOnsem 那我该怎么办?你能告诉我吗?
标签: python python-3.x django django-models django-forms