【问题标题】:django: delete pevious photo while adding a new photodjango:在添加新照片时删除以前的照片
【发布时间】: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 %}

【问题讨论】:

    标签: python html django bootstrap-4


    【解决方案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这里的图像存储和替换在数据库中而不是在静态文件中,你可以自己解决
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2015-06-22
    相关资源
    最近更新 更多