আপনি আপনার প্রজেক্টে থাকা যেকোনো ফাইল ডাউনলোডযোগ্য করতে django-downloadview প্যাকেজ ব্যবহার করতে পারেন। আপনি একটি সার্ভারে ফাইল হোস্ট করতে পারেন।
এই নিবন্ধে, আমরা দেখব কীভাবে আমাদের জ্যাঙ্গো প্রকল্পে একটি ফাইল ডাউনলোডযোগ্য করা যায়। এটি একটি মজার বিষয় হবে এবং আপনি এটি পছন্দ করবেন।
প্রথমে, প্যাকেজটি ইনস্টল করুন -
pip install django-downloadview
এখন একটি জ্যাঙ্গো প্রকল্প এবং একটি অ্যাপ তৈরি করুন। 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)
আমরা দুটি ইউআরএল এন্ডপয়েন্ট তৈরি করেছি, একটি হল ফ্রন্টএন্ড রেন্ডার করা এবং অন্যটি হল মডেল ডাউনলোডভিউ। অবজেক্টডাউনলোডভিউ দৃষ্টান্ত হল সেই মডেলটি যার ফাইলটি আমরা হোস্ট করতে যাচ্ছি এবং আমরা সেই ক্ষেত্রটি সংজ্ঞায়িত করেছি যেখানে ফাইলটি সংরক্ষণ করা হবে৷
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 আমাদের মডেল ইনস্ট্যান্সের যেটিতে ফাইলটি সংরক্ষিত থাকবে।
আপনি লিঙ্কগুলিকে গতিশীল করতে পারেন তবে এখানে, আমরা এটিকে একটি মৌলিক স্তরে রাখতে চাই৷
আউটপুট