如何从静态文件夹中删除文件?

问题描述 投票:0回答:1

我有删除所有保存在文件夹中的文件和数据库表中文件的代码:

def delete(request):
    folder = '../f2candon/andon/static/media/fileupload'
    for the_file in os.listdir(folder):
        file_path = os.path.join(folder, the_file)
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
        except Exception as e:
            print(e)
    delet = Media.objects.all()
    delet.delete()
    return HttpResponseRedirect('/mediafile/')

但是我必须将另一个文件放置在其中仅删除一个文件的位置,无论该文件是否已被ID删除,要从数据库中删除它,我都是这样做的:

def delete_media(request, id):
    delete_file = Media.objects.get(pk=id)
    delete_file.delete()
    return HttpResponseRedirect('/mediafile/')

是否有一种方法可以从数据库中刚刚删除的静态文件夹中删除同一文件?在数据库和文件夹中找到相同的文件。

问候

python django django-views
1个回答
0
投票

您可以在删除数据库中的对象后为signal handler编写一个post_delete来处理deleting the files

@receiver(post_delete, sender=Media)
def delete_associated_files(sender, instance, **kwargs):
    """Removes the media file from disk after deletion."""
    if instance.file:  # assuming the field name is "file"
        instance.file.delete(save=False) 
© www.soinside.com 2019 - 2024. All rights reserved.