如何使任何Django模型的文件可下载?
您可以使用django-downloadview软件包将项目中包含的任何文件变为可下载文件。您可以在服务器上托管这些文件。
在本文中,我们将看到如何使我们的Django项目中的文件可下载。这将是一个有趣的话题,您会喜欢它。
首先,安装包:−
pip install django-downloadview
现在创建一个Django项目和应用程序。设置URL并进行一些基本操作,例如将应用程序添加到INSTALLED_APPS中。还需要在 settings.py 中设置MEDIA_ROOT和MEDIA_URL。
阅读更多:Python 教程
示例
在 models.py 中添加以下行:−
from django.db import models
# 创建你的models在此处。
class Data(models.Model):
file=models.FileField(upload_to='myfiles/',blank=True)
在此处,我们创建了一个模型,该模型将保存上传文件的文件引用。为此模型创建一些假数据。
在 urls.py 中−
from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
from django_downloadview import ObjectDownloadView
from .models import Data
download = ObjectDownloadView.as_view(model=Data, file_field=
'file')
urlpatterns = [
path('', views.home,name="home"),
path('download//', download, name="default"),
]
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
我们创建了两个URL端点,一个用于呈现前端,另一个用于具有模型downloadview。 ObjectDownloadView是一个实例,它采用我们要主持的文件的模型,并定义将保存该文件的字段。
在 views.py 中−
def home(request):
return render(request,'home.html')
在此处,我们呈现了我们的前端html。
在 home.html 中,添加以下代码−
<!DOCTYPE html>
<html>
<head>
<title>
TUT
</title>
</head>
<body>
<h2>HI</h2>
<a href="http://127.0.0.1:8000/download/1/">
Download</a> // '1'是我们的“Data”模型的虚拟数据的ID
</body>
</html>
在此处,我们引用了一个文件,该文件是我们创建的虚拟数据。 ‘1’是我们的模型实例的 id ,其中将存储该文件。
您可以使链接动态化,但是在此处,我们希望将其保持在基本级别。
输出

极客教程