如何使任何 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+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告