图像未保存到媒体或创建媒体文件夹(Python、Django)
在过去的几天里,我一直在努力解决这个问题,我做的一切都是对的,我不知道我到底错过了什么 当我尝试从管理页面上载图像时,它会成功地上载,并创建媒体文件夹(如果尚未存在) 但当我尝试从url获取图像时,图像保存在模型的url字段中,但从未创建到模型的图像字段,即image=image=models.ImageField 下面是我的代码 模型图像未保存到媒体或创建媒体文件夹(Python、Django),python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,在过去的几天里,我一直在努力解决这个问题,我做的一切都是对的,我不知道我到底错过了什么 当我尝试从管理页面上载图像时,它会成功地上载,并创建媒体文件夹(如果尚未存在) 但当我尝试从url获取图像时,图像保存在模型的url字段中,但从未创建到模型的图像字段,即image=image=models.ImageField 下面是我的代码 模型 class Image(models.Model): user = models.ForeignKey( settings.AUTH_U
class Image(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL, related_name="user_images", on_delete=models.CASCADE
)
users_like = models.ManyToManyField(
settings.AUTH_USER_MODEL, related_name="images_liked", blank=True
)
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, blank=True)
url = models.URLField()
image = models.ImageField(upload_to="images/%Y/%m/%d/")
description = models.TextField(blank=True)
created = models.DateField(
auto_now_add=True, db_index=True
)
表单保存方法
def save(self, force_insert=False, force_update=False, commit=True):
image = super().save(commit=False)
image_url = self.cleaned_data["url"]
name = slugify(image.title)
extension = image_url.rsplit(".", 1)[1].lower()
image_name = f"{name}.{extension}"
# download image from the given URL
response = request.urlopen(image_url)
image.image.save(image_name, ContentFile(response.read()), save=False)
if commit:
image.save()
return image
在your views.py中,尝试从表单提取数据时,而不是
form_data=MyForm(request.POST)
换成
form_data = Myform(request.POST,request.FILES)
另外,尝试通过跳过初始验证函数来验证表单输入,并确保,你收到一张格式正确的图片,让你的生活更轻松你能添加你的
设置.py
文件MEDIA\u ROOT
和MEDIA\u URL
config吗?我认为MEDIA ROOT没问题,因为当我通过管理页面上传时,一切都正常。。。但是我想将下载的图像保存到模型字段(图像),谢谢,是的,我已经在验证表单输入,我还使用了获取所有数据的form\u data=MyForm(data=request.POST)
form_data = Myform(request.POST,request.FILES)