आप किसी भी फाइल को जो आपके प्रोजेक्ट में है, डाउनलोड करने योग्य बनाने के लिए django-downloadview पैकेज का उपयोग कर सकते हैं। आप फाइल्स को सर्वर पर होस्ट कर सकते हैं।
इस लेख में, हम देखेंगे कि अपने Django प्रोजेक्ट में किसी फाइल को डाउनलोड करने योग्य कैसे बनाया जाए। यह एक मजेदार टॉपिक होगा और आपको पसंद आएगा।
सबसे पहले, पैकेज इंस्टॉल करें:
pip install django-downloadview
अब एक Django प्रोजेक्ट और एक ऐप बनाएं। urls सेट करें और INSTALLED_APPS में ऐप जोड़ने जैसे कुछ बुनियादी काम करें। साथ ही settings.py में MEDIA_ROOT और MEDIA_URL सेट करें।
उदाहरण
models.py में, निम्नलिखित लाइनें जोड़ें:
from django.db import 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"),
] + 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' हमारे 'Data' मॉडल के डमी डेटा की ID है
</body>
</html>
यहां हमने एक फाइल का रेफरेंस दिया जिसे हमने डमी डेटा के रूप में बनाया। '1' हमारे मॉडल इंस्टेंस की id है जिसमें फाइल स्टोर होगी।
आप लिंक्स को डायनामिक बना सकते हैं लेकिन यहां, हम इसे बेसिक लेवल पर रखना चाहते हैं।
आउटपुट
