Function-based এবং Class-based Views

Web Development - জ্যাঙ্গো (Django) - Django URL Routing এবং Views
261

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 অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...