我有一个个人资料应用,用户可以在其中上传个人资料图片。我用用户名保存图片。 ifakih.jpg。如果该文件已经存在,并且他们想更改其个人资料图片,我将删除旧的图片,然后用新的图片替换。我可以在目录中看到更改。旧的ifakih.jpg替换为新的。但是,我的网站仍然使用旧图像。如果我转到管理员并检查该用户的图像字段,则它指向正确的目录和图像,但是内容错误。
Models.py :
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=64,blank=True)
profilePic = models.ImageField(blank=True, null=True, upload_to= path_and_rename)
phoneNumber = models.CharField(max_length=12,blank=True)
streetAddress = models.CharField(max_length=64,blank=True)
@receiver(pre_delete, sender=Profile)
def post_delete(sender, instance, **kwargs):
"""
Deleting the specific image of a Post after delete it
"""
if instance.profilePic:
if os.path.isfile(instance.profilePic.path):
os.remove(instance.profilePic.path)
@receiver(pre_save, sender=Profile)
def post_update(sender, instance, **kwargs):
"""
Replacing the specific image of a Post after update
"""
if not instance.pk:
return False
if sender.objects.get(pk=instance.pk).profilePic:
old_image = sender.objects.get(pk=instance.pk).profilePic
new_image = instance.profilePic
if not old_image == new_image:
if os.path.isfile(old_image.path):
os.remove(old_image.path)
else:
return False
答案 0 :(得分:0)
这听起来像是浏览器缓存图像引起的问题。
要查看是否与此相关,请尝试使用STRG + F5重新加载以忽略缓存的文件(您可以在“网络”标签中禁用浏览器缓存)。
您可以通过两种方式解决该问题:
1)禁用对个人资料图片的缓存,以便浏览器始终加载图像而根本不缓存。这会导致服务器上的流量增加,并且站点的加载时间也会更长。 (不推荐)
2)您更改文件保存行为并允许使用不同的文件名。这样,浏览器将为第一个请求加载图像,然后可以使用其缓存。保存时,ImageField还将为您生成一个唯一的名称。 (首选)