首页 > 解决方案 > Django 保存元数据 -[Errno 2] 没有这样的文件或目录:

问题描述

我有一个问题。我遇到了路径问题:

[Errno 2] 没有这样的文件或目录:

我试过:

url = self.image.url
image_meta = image.open(url)

然后在添加 URL "https://...." + self.image.url 的第一部分时,我仍然遇到同样的问题你知道吗

class Picture(models.Model):
    catego = models.ForeignKey(Catego,on_delete=models.CASCADE,related_name="catego_pictures")
    user = models.ForeignKey(User, blank=True, null=True,on_delete=models.CASCADE,related_name='user_pictures')
    image = models.ImageField(upload_to='nutriscore/')
    latitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, default='0')
    longitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, default='0')
    date = models.CharField(max_length=100, blank=True)
    software = models.CharField(max_length=100, blank=True)
    artist = models.CharField(max_length=100, blank=True)
    metadata = models.TextField(max_length=1000, blank=True)
    pictureoption = models.CharField(max_length=20,choices=Pictureoption.choices,default=Pictureoption.HOME,)
    publishing_date = models.DateField(auto_now_add=True)
    
    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        url = self.image.url
        full_path = os.listdir(url)
        image_meta = image.open(full_path)
        
        exif = {}
        for tag, value in image_meta.get_exif().items():
            if tag in TAGS:
                exif[TAGS[tag]] = value
                
        if 'DateTime' in exif:
            self.date = DateTime
        if 'Software' in exif:
            self.software = Software
        if 'Artist' in exif:
            self.artist = Artist
        ...

    
        self.metadata = exif
        super().save(*args, **kwargs)
        
    def __str__(self):
        return self.catego.name   

标签: pythondjango

解决方案


您应该使用.path图像对象的属性,而不是.url,因为您似乎正在尝试使用其本地路径访问文件,而不是将其作为 Web 资源获取。


推荐阅读