Custom Controllers এবং Actions তৈরি করা

TurboGears এর Advanced Topics - টার্বোগিয়ার্স (TurboGears) - Web Development

251

TurboGears এর পরিচিতি

TurboGears একটি জনপ্রিয় এবং শক্তিশালী Python ওয়েব ফ্রেমওয়ার্ক যা দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। এটি MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে এবং Flask এবং Django এর মতো অন্যান্য ফ্রেমওয়ার্কের কিছু বৈশিষ্ট্যও ধারণ করে। TurboGears-এর মূল লক্ষ্য হল ওয়েব ডেভেলপমেন্টকে সহজ এবং দ্রুততর করা।

TurboGears মূলত SQLAlchemy এবং Genshi টেমপ্লেট ইঞ্জিন ব্যবহার করে ডেটাবেস মডেলিং এবং টেমপ্লেট রেন্ডারিং প্রক্রিয়া পরিচালনা করে। এর মধ্যে বিভিন্ন মডিউল এবং লাইব্রেরি অন্তর্ভুক্ত রয়েছে যা ডেভেলপারদের জন্য কার্যকরী ও সহজ টুল সরবরাহ করে।


Custom Controllers এবং Actions তৈরি করা

TurboGears-এ Controller হল এমন একটি উপাদান যা রিকোয়েস্টের সাথে সম্পর্কিত অ্যাকশনগুলি পরিচালনা করে। TurboGears কন্ট্রোলার এবং অ্যাকশন তৈরি করার জন্য মডেল, ভিউ এবং রাউটিং ব্যবস্থার উপর ভিত্তি করে কাজ করে। Custom Controllers এবং Actions তৈরি করার মাধ্যমে আপনি ওয়েব অ্যাপ্লিকেশনে বিভিন্ন ফাংশনালিটি যোগ করতে পারেন।

Controller এবং Action এর সংজ্ঞা:

  • Controller: কন্ট্রোলার হল সেই ক্লাস যেখানে ওয়েব রিকোয়েস্টগুলির জন্য লজিক থাকা দরকার।
  • Action: অ্যাকশন হল সেই মেথড যা একটি কন্ট্রোলারের মধ্যে থাকবে এবং ওয়েব রিকোয়েস্ট হ্যান্ডলিং করবে।

TurboGears-এ কন্ট্রোলার তৈরি এবং কাস্টম অ্যাকশন তৈরি করা বেশ সরল এবং কিছু নিয়ম অনুসরণ করে করা যেতে পারে।


Custom Controller তৈরি করা

TurboGears-এ কাস্টম কন্ট্রোলার তৈরি করতে, প্রথমে tg.controllers থেকে BaseController ক্লাস ইনহেরিট করতে হয় এবং তারপর বিভিন্ন অ্যাকশন মেথড ডিফাইন করা হয়। এই অ্যাকশনগুলি HTTP রিকোয়েস্ট গ্রহণ করে এবং ব্যবহারকারীকে উপযুক্ত রেসপন্স পাঠায়।

উদাহরণ: Custom Controller তৈরি করা

from tg import expose, request, redirect
from tg.controllers import BaseController

class MyController(BaseController):
    
    @expose('json')
    def index(self):
        # এই অ্যাকশনটি ডিফল্ট রুট (/) থেকে কল করা হবে
        return dict(message="Welcome to TurboGears!")

    @expose('json')
    def greet(self, name):
        # এই অ্যাকশনটি একটি URL প্যারামিটার নিয়ে কাজ করবে
        return dict(message=f"Hello, {name}!")

    @expose('json')
    def add(self, num1, num2):
        # এই অ্যাকশনটি দুইটি প্যারামিটার নিয়ে যোগফল রিটার্ন করবে
        try:
            num1 = float(num1)
            num2 = float(num2)
            return dict(result=num1 + num2)
        except ValueError:
            return dict(error="Invalid input. Please provide numbers.")

এখানে, আমরা MyController নামক একটি কন্ট্রোলার তৈরি করেছি যেখানে তিনটি অ্যাকশন রয়েছে:

  • index: এটি ডিফল্ট রুট (/) অ্যাকশন এবং একটি বার্তা রিটার্ন করবে।
  • greet: এটি একটি name প্যারামিটার গ্রহণ করে এবং একটি স্বাগত বার্তা প্রদর্শন করবে।
  • add: দুটি সংখ্যার যোগফল রিটার্ন করবে।

এভাবে আপনি TurboGears এ কাস্টম কন্ট্রোলার তৈরি করতে পারেন এবং বিভিন্ন রাউট এবং অ্যাকশন হ্যান্ডলিং করতে পারেন।


Routing কনফিগারেশন

এখন যে কন্ট্রোলার তৈরি করা হলো, সেটি ব্যবহার করার জন্য আপনাকে routing কনফিগারেশন করতে হবে যাতে আপনি কন্ট্রোলার এবং অ্যাকশনের সাথে সংযুক্ত URL ঠিকানা চিহ্নিত করতে পারেন।

উদাহরণ: Routing কনফিগারেশন

from tg import expose, TGController
from myapp.controllers import MyController

class RootController(TGController):
    mycontroller = MyController()

    @expose()
    def index(self):
        # এটি রুট পেজের জন্য ব্যবহৃত হবে
        return "Welcome to the Root Page!"

এখানে, RootController এর মধ্যে MyController যুক্ত করা হয়েছে। এখন, mycontroller নামক কন্ট্রোলারটি ওয়েব রিকোয়েস্টে ব্যবহৃত হবে এবং এর অ্যাকশনগুলো URL রাউটিং দ্বারা হ্যান্ডল করা যাবে।


Action Parameters এবং URL Query Handling

TurboGears-এ আপনি সহজেই URL প্যারামিটারগুলি গ্রহণ এবং প্রক্রিয়া করতে পারেন। Action Parameters দ্বারা ইউআরএল থেকে ডেটা পাঠানো এবং গ্রহণ করা সহজ।

উদাহরণ: URL Query Handling

from tg import expose

class MyController(BaseController):

    @expose('json')
    def greet(self, name="Guest"):
        # URL থেকে 'name' প্যারামিটার গ্রহণ করবে
        return dict(message=f"Hello, {name}!")

এখানে, greet অ্যাকশনের জন্য একটি প্যারামিটার name রয়েছে। যদি ইউআরএল-এ name প্যারামিটার না থাকে তবে এটি Guest হিসাবে ডিফল্ট মান নিবে।

URL হবে:

/greet/John       # Output: {"message": "Hello, John!"}

এবং

/greet/           # Output: {"message": "Hello, Guest!"}

Action Return Types এবং Templates

TypeORM এ অ্যাকশন সাধারণত ডেটা রিটার্ন করে, তবে আপনি চাইলে টেমপ্লেটও রিটার্ন করতে পারেন। TurboGears টেমপ্লেট রেন্ডারিং Genshi অথবা Jinja2 ব্যবহার করে।

উদাহরণ: Action Return Types এবং Templates

from tg import expose, tmpl_context

class MyController(BaseController):

    @expose('myapp.templates.welcome')
    def index(self):
        tmpl_context.name = "TurboGears"
        return dict(message="Welcome to the TurboGears App!")

এখানে, index অ্যাকশনটি welcome টেমপ্লেট রিটার্ন করছে, যা myapp.templates প্যাকেজের অংশ। tmpl_context এর মাধ্যমে টেমপ্লেটে ডেটা পাঠানো হচ্ছে।


সারাংশ

TurboGears এ কাস্টম কন্ট্রোলার এবং অ্যাকশন তৈরি করা সহজ এবং সরল। Controllers এর মাধ্যমে ওয়েব রিকোয়েস্ট পরিচালনা করা হয় এবং Actions মেথডের মাধ্যমে বিভিন্ন ফাংশনালিটি সংযুক্ত করা যায়। কন্ট্রোলার এবং অ্যাকশন কনফিগার করার পর Routing এর মাধ্যমে URL এবং অ্যাকশন সংযুক্ত করা হয়। এছাড়াও, TurboGears-এ URL প্যারামিটার, টেমপ্লেট রেন্ডারিং এবং অ্যাকশন রিটার্ন টাইপের ব্যবস্থাও সহজে করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...