Django-তে ওয়েব অ্যাপ্লিকেশন তৈরি করার সময় আপনি Views ব্যবহার করেন। Views হল সেই ফাংশন বা ক্লাস যা HTTP অনুরোধ (request) গ্রহণ করে এবং সেই অনুযায়ী একটি HTTP উত্তর (response) প্রদান করে। Django-তে দুটি ধরণের Views ব্যবহৃত হয়: Function-based Views (FBV) এবং Class-based Views (CBV)।
Function-based Views (FBV)
Function-based Views (FBV) হল সাধারণ Python ফাংশন যা একটি HTTP অনুরোধ গ্রহণ করে এবং একটি HTTP উত্তর প্রদান করে। এটি Django-তে সবচেয়ে সাধারণ এবং সরল উপায়।
১. FBV এর উদাহরণ
এখানে একটি সাধারণ FBV উদাহরণ দেওয়া হলো:
# views.py
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello, World!")
এই ফাংশনটি একটি request প্যারামিটার গ্রহণ করে এবং একটি HttpResponse রিটার্ন করে যা "Hello, World!" বার্তা প্রদর্শন করবে।
২. FBV ব্যবহার করে URL কনফিগারেশন
FBV-কে URL এর সাথে সংযুক্ত করার জন্য urls.py ফাইলে এটি উল্লেখ করতে হবে:
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello_world, name='hello_world'),
]
এখন যদি আপনি http://127.0.0.1:8000/hello/ URL এ যান, আপনি "Hello, World!" বার্তা দেখতে পাবেন।
Class-based Views (CBV)
Class-based Views (CBV) Django-তে views তৈরি করার আরেকটি পদ্ধতি। এটি FBV-এর তুলনায় আরো সংগঠিত এবং শক্তিশালী। CBV-তে আপনি বিভিন্ন HTTP মেথডের (যেমন GET, POST) জন্য আলাদা মেথড ডিফাইন করতে পারেন। এটি কোড পুনরাবৃত্তি কমায় এবং বড় অ্যাপ্লিকেশনগুলির জন্য আরও সুসংগঠিত।
১. CBV এর উদাহরণ
CBV তৈরি করতে Django-এর View ক্লাস ব্যবহার করা হয়। এখানে একটি সাধারণ CBV উদাহরণ দেওয়া হলো:
# views.py
from django.http import HttpResponse
from django.views import View
class HelloWorldView(View):
def get(self, request):
return HttpResponse("Hello, World!")
এখানে, HelloWorldView ক্লাসটি View ক্লাস থেকে ইনহেরিট করা হয়েছে এবং get মেথডটি HTTP GET অনুরোধের জন্য একটি উত্তর প্রদান করছে।
২. CBV ব্যবহার করে URL কনফিগারেশন
CBV-কে URL এর সাথে সংযুক্ত করতে আপনাকে as_view() মেথড ব্যবহার করতে হবে। উদাহরণ:
# urls.py
from django.urls import path
from .views import HelloWorldView
urlpatterns = [
path('hello/', HelloWorldView.as_view(), name='hello_world'),
]
এখন http://127.0.0.1:8000/hello/ URL এ গেলে "Hello, World!" বার্তা দেখতে পাবেন, ঠিক FBV-এর মতো।
FBV এবং CBV এর মধ্যে পার্থক্য
| পার্থক্য | Function-based Views (FBV) | Class-based Views (CBV) |
|---|---|---|
| সহজতা | সহজ, সরল এবং তাড়াতাড়ি তৈরি করা যায় | আরো জটিল, বিশেষত বড় অ্যাপ্লিকেশনগুলির জন্য |
| বিস্তৃততা | কম, সাধারণত এক বা দুইটি HTTP মেথড | বেশ বিস্তৃত, বিভিন্ন HTTP মেথডের জন্য পৃথক মেথড আছে |
| কোড পুনঃব্যবহারযোগ্যতা | কম, প্রতিটি ফাংশন আলাদা আলাদা কোড থাকতে পারে | বেশি, বিশেষ করে মিক্সিন ব্যবহার করে |
| ব্যবহার | ছোট বা সাধারণ প্রোজেক্টের জন্য উপযুক্ত | বড় এবং মডুলার প্রোজেক্টের জন্য উপযুক্ত |
| কাস্টমাইজেশন | সহজ কাস্টমাইজেশন, তবে কোড বেশি হতে পারে | অধিক কাস্টমাইজেশন সুবিধা, তবে একটু কঠিন |
| বিস্তৃত ব্যবহার | ছোট টাস্ক বা সিম্পল ভিউগুলির জন্য আদর্শ | বড় অ্যাপ্লিকেশনের জন্য বেশি উপযোগী |
Function-based Views এবং Class-based Views কখন ব্যবহার করবেন?
- Function-based Views (FBV) ব্যবহার করুন যখন আপনার ভিউটি খুব সহজ এবং ছোট হবে এবং কোনো জটিল লজিকের প্রয়োজন নেই।
- Class-based Views (CBV) ব্যবহার করুন যখন আপনার ভিউতে বেশ কিছু HTTP মেথডের হ্যান্ডলিং করতে হবে, অথবা আপনি কোড পুনঃব্যবহারযোগ্যতা এবং বড় অ্যাপ্লিকেশনের জন্য একটি মডুলার পদ্ধতির প্রয়োজন অনুভব করেন।
Django তে বিভিন্ন ধরনের CBV
Django-তে অনেক ধরনের প্রস্তুত-পোশাক CBV (built-in views) রয়েছে, যেগুলি বিভিন্ন কাজের জন্য প্রস্তুত করা হয়েছে, যেমন:
- ListView: একটি মডেল থেকে সব অবজেক্টের লিস্ট প্রদর্শন করে।
- DetailView: নির্দিষ্ট একটি অবজেক্টের বিস্তারিত তথ্য দেখায়।
- CreateView: নতুন অবজেক্ট তৈরি করার জন্য ফর্ম প্রদর্শন করে।
- UpdateView: বিদ্যমান অবজেক্ট আপডেট করার জন্য ফর্ম প্রদর্শন করে।
- DeleteView: একটি অবজেক্ট মুছে ফেলার জন্য।
আপনি এই ক্লাসগুলো ব্যবহার করে আরও দ্রুত এবং সহজভাবে Django অ্যাপ্লিকেশন তৈরি করতে পারেন।