Django

⌘K
  1. Home
  2. Django
  3. Django তে কিভাবে কাজ করতে...
  4. Views
  5. 04. Django ভিউ তে Decorator কি

04. Django ভিউ তে Decorator কি

Django ভিউ তে Decorator কি

এমন ফাংশন যা অতিরিক্ত ফাঙ্কশনালিটি যোগ করার জন্য ব্যবহৃত হয়। অন্য কথায়, ডেকোরেটর হল একটি function এর আচরণ পরিবর্তন বা উন্নত করার একটি উপায়।

Django functional ভিউ ও ক্লাস ভিউ দুইটাতেই ডেকোরেটর ব্যবহার হয়। Django বিল্ট ইন কিছু ডেকোরেটর বানিয়ে রেখেছে যা ব্যবহার করে আমরা Django ভিউ তে অতিরিক্ত কিছু ফিচার যোগ করতে পারি। উদাহরণস্বরূপ আমরা চাচ্ছি আমাদের ভিউটি শুধুমাত্র লগইন ইউজার দেখতে পাবে এজন্য আমরা Django এর login ডেকোরেটর ব্যবহার করতে পারি এরকম আরো অনেক ডেকোরেটর আছে Django তে।

Function-Based View with Login Decorator:

# views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.http import HttpResponse

@login_required
def hello_world_functional(request):
    return HttpResponse("Hello, World!")

Class-Based View with Login Decorator:

# views.py
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views import View
from django.http import HttpResponse

@method_decorator(login_required, name='dispatch')
class HelloWorldClassView(View):
    def get(self, request):
        return HttpResponse("Hello, World!")

name=’dispatch’ প্রতিটি http রিকোয়েস্ট এর জন্য dispatch কল করা হয়েছে যেখানে লগইন চেক করবে

urls.py

# urls.py
from django.urls import path
from .views import hello_world_functional, HelloWorldClassView

urlpatterns = [
    path('hello-functional/', hello_world_functional, name='hello_functional'),
    path('hello-class/', HelloWorldClassView.as_view(), name='hello_class'),
]

How can we help?