django:在添加新照片时删除以前的照片
Posted
技术标签:
【中文标题】django:在添加新照片时删除以前的照片【英文标题】:django: delete pevious photo while adding a new photo 【发布时间】:2021-02-13 23:29:16 【问题描述】:我正在开发用户个人资料,用户可以在其中添加个人资料图片。添加图片工作正常,但是当我想添加新照片时,旧照片不会消失。我的 django 版本是 3.1,我尝试过 django-smartfields 但它仍然无法正常工作。有人可以帮忙吗?
views.py
from smartfields import fields
class Profile_Pic(models.Model):
user = models.ForeignKey(User, default='', null=False, on_delete=models.CASCADE, related_name='userPic')
profile_pic = fields.ImageField(upload_to='media', default='admin_car/static/images/img_avatar.png', blank=True)
class Meta:
db_table = 'Profile_Pic'
user_image.html
% extends 'datas/base.html' %
% block content %
% load static %
<h1 class="text-center" style="color: white">Add Profile Picture</h1>
<br><br>
<div class= "col-md-6.offset-md-3">
<form method="POST" enctype="multipart/form-data">
% csrf_token %
% if form.errors %
<div class="alert alert-warning alert-dismissable" role="alert">
<button class="close" data-dismiss="alert">
<small><sup>x</sup></small>
</button>
<p>Data Error, Please Check Again.....</p>
% for field in form %
% if field.errors %
field.errors
% endif %
% endfor %
</div>
% endif %
form.as_p
<input type="submit" value="Save" class="btn btn-primary">
</form>
</div>
% endblock %
【问题讨论】:
【参考方案1】:如果您的图片在您的 static/image 文件夹中更新,但没有在浏览器中更新,这是因为浏览器缓存了您的静态文件,并且它们不会轻易更改。但是有一些解决方法可以使用“whitenoise” 请按照以下步骤操作。
清除浏览器缓存以清除现有缓存。
pip3 install whitenoise
然后将以下内容添加到 settings.py 的末尾
if DEBUG:
MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware',
] + MIDDLEWARE
INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
] + INSTALLED_APPS
然后重新运行您的服务器,静态文件将不再被缓存
【讨论】:
谢谢你的回答,但实际上我想删除以前保存的模型,每当用户要添加新图片时,应该保存新的并删除以前的。 那么你可以使用这里显示的方法上传图片github.com/csev/dj4e-samples/tree/master/pics这里的图像存储和替换在数据库中而不是在静态文件中,你可以自己解决以上是关于django:在添加新照片时删除以前的照片的主要内容,如果未能解决你的问题,请参考以下文章