1.问题:
在使用如下代码实现上传文件的删除时,发现仅仅只时删除了前端的数据,然而在服务器上上传的文件仍然存在。
2. 解决
使用Python的os库,结合Django删除服务器上的文件。
views.py
import os
def deleteFile(request,id):
dir = 'file_path'
Id = id
deletefile = FileInfo.objects.filter(id = Id)
#不可以直接写成 os.remove(dir+'{}'.format(deletefile.name))
for i in deletefile:
os.remove(dir+'{}'.format(i.name))
FileInfo.objects.filter(id = Id).delete()
return HttpResponseRedirect(reverse('lib:list'))
url.py
from django.urls import path,include
from . import views
app_name = 'lib'
urlpatterns= [
path('', views.Upload, name = 'upload'),
path('list/',views.List, name = 'list'),
path('del/<int:id>',views.deleteFile,name='delete'),
]
html
{% for i in file_list %}
<a href="{% url 'lib:delete' i.id %}">
<u id="f2">
删除
</u>
</a>