如何使任何 Django 模型的文件可下载?


您可以使用 django-downloadview 包来使项目中任何文件可下载。您可以将文件托管在服务器上。

在本文中,我们将了解如何在 Django 项目中使文件可下载。这将是一个有趣的话题,您会喜欢的。

首先,安装软件包:

pip install django-downloadview

现在创建一个 Django 项目和一个应用程序。设置 URL 并执行一些基本操作,例如在 INSTALLED_APPS 中添加应用程序。还在 **settings.py** 中设置 MEDIA_ROOT 和 MEDIA_URL。

示例

在 **models.py** 中,添加以下行:

from django.db import models

# Create your models here.
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 端点,一个是渲染前端,另一个是具有 **model 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' is ID of a dummy data of our 'Data' model
   </body>
</html>

在这里,我们引用了我们作为虚拟数据创建的文件。'1' 是模型实例的 **id**,该实例将存储在其中的文件。

您可以使链接动态化,但在这里,我们希望将其保持在基本级别。

输出

更新于: 2021年8月26日

1K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告