Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะทำให้ดาวน์โหลดไฟล์ของรุ่น Django ได้อย่างไร?


คุณสามารถใช้แพ็คเกจ django-downloadview เพื่อทำให้ไฟล์ใดๆ ที่คุณมีในโปรเจ็กต์ของคุณดาวน์โหลดได้ คุณสามารถโฮสต์ไฟล์บนเซิร์ฟเวอร์ได้

ในบทความนี้ เราจะมาดูวิธีทำให้ไฟล์ดาวน์โหลดได้ในโปรเจ็กต์ Django ของเรา มันจะเป็นหัวข้อที่สนุกและคุณจะรักมัน

ขั้นแรก ติดตั้งแพ็คเกจ −

pip install django-downloadview

ตอนนี้สร้างโปรเจ็กต์ Django และแอพ ตั้งค่า URL และทำสิ่งพื้นฐานบางอย่าง เช่น เพิ่มแอปใน INSTALLED_APPS ตั้งค่า MEDIA_ROOT และ MEDIA_URL ใน settings.py . ด้วย

ตัวอย่าง

ใน 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 สองจุด จุดแรกคือการแสดงผลส่วนหน้า และอีกจุดหนึ่งมี รูปแบบการดาวน์โหลดมุมมอง 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="https://127.0.0.1:8000/download/1/">
Download</a> // '1' is ID of a dummy data of our 'Data' model
   </body>
</html>

ที่นี่เราให้การอ้างอิงถึงไฟล์ที่เราสร้างเป็นข้อมูลจำลอง '1' คือ id ของอินสแตนซ์โมเดลของเราซึ่งจะมีไฟล์จัดเก็บอยู่ในนั้น

คุณสามารถสร้างลิงก์แบบไดนามิกได้ แต่ที่นี่ เราต้องการให้มันอยู่ในระดับพื้นฐาน

ผลลัพธ์

จะทำให้ดาวน์โหลดไฟล์ของรุ่น Django ได้อย่างไร? จะทำให้ดาวน์โหลดไฟล์ของรุ่น Django ได้อย่างไร?