Controllers এবং Actions গাইড ও নোট

Web Development - ওয়েব২পাই (Web2Py)
208

Web2Py তে Controllers এবং Actions হল অ্যাপ্লিকেশনের লজিক অংশ, যা ইউজারের ইনপুট গ্রহণ করে, ডেটাবেসের সাথে কাজ করে এবং ভিউতে ডেটা পাঠানোর কাজ করে। Controllers এবং Actions এর মাধ্যমে একটি ওয়েব অ্যাপ্লিকেশনের কার্যকারিতা এবং লজিক পরিচালিত হয়।


Web2Py Controllers

Web2Py তে Controllers হল এমন স্ক্রিপ্ট যা ইউজারের রিকোয়েস্ট গ্রহণ করে এবং সেই অনুযায়ী প্রতিক্রিয়া প্রদান করে। Controller গুলি মূলত Python কোড ধারণ করে এবং এগুলো অ্যাপ্লিকেশন লজিক পরিচালনা করে।

Controller ফোল্ডার: controllers ফোল্ডারে সাধারণত .py ফাইল থাকে, যা কন্ট্রোলার কোড ধারণ করে।

Controller এর কাজ

  1. ইউজারের রিকোয়েস্ট হ্যান্ডলিং: কন্ট্রোলার ইউজারের রিকোয়েস্ট গ্রহণ করে এবং সেই অনুযায়ী প্রয়োজনীয় প্রক্রিয়া শুরু করে।
  2. ডেটাবেস ম্যানিপুলেশন: কন্ট্রোলার ডেটাবেসের সাথে যোগাযোগ করে। যেমন নতুন রেকর্ড তৈরি, পুরনো রেকর্ড আপডেট করা বা মুছে ফেলা।
  3. ভিউতে ডেটা পাঠানো: কন্ট্রোলার ভিউ ফাইলের জন্য ডেটা তৈরি করে এবং পাঠায়।

Web2Py Actions

Web2Py তে Actions হল কন্ট্রোলারের মধ্যে প্রতিটি ফাংশন, যা ইউজারের একটি নির্দিষ্ট রিকোয়েস্ট হ্যান্ডল করার জন্য ব্যবহৃত হয়। প্রতিটি অ্যাকশন একটি HTTP রিকোয়েস্টের জন্য কাজ করে। অ্যাকশনগুলো মূলত ফাংশন যা URL রাউটিংয়ের মাধ্যমে একে অন্যের সাথে সংযুক্ত থাকে।

Action ফোল্ডার: controllers ফোল্ডারে প্রতিটি ফাংশনই একটি আলাদা অ্যাকশন হিসেবে কাজ করে।

Action এর কাজ

  1. HTTP রিকোয়েস্টের জন্য প্রতিক্রিয়া দেওয়া: কন্ট্রোলার ফাংশনগুলো HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE ইত্যাদি) অনুযায়ী কাজ করে।
  2. URL রাউটিং: একটি URL পেতে নির্দিষ্ট কন্ট্রোলার ফাংশনকে কল করা হয়। উদাহরণস্বরূপ, /app_name/controller_name/action_name এই URL এর মাধ্যমে কন্ট্রোলার এবং অ্যাকশন কল করা হয়।

Controllers এবং Actions এর উদাহরণ

ধরা যাক আপনি একটি বইয়ের অ্যাপ্লিকেশন তৈরি করছেন, যেখানে ব্যবহারকারী বইয়ের নাম দেখতে এবং নতুন বই যোগ করতে পারবে। এই প্রক্রিয়াটি একটি কন্ট্রোলার এবং বিভিন্ন অ্যাকশন ব্যবহার করে করা হবে।

১. controllers/default.py:

# default.py কন্ট্রোলারের মধ্যে দুটি অ্যাকশন হবে - 'index' এবং 'add_book'

def index():
    books = db().select(db.book.ALL)  # সমস্ত বই নিয়ে আসা
    return dict(books=books)  # ভিউতে পাঠানো হবে

def add_book():
    form = SQLFORM(db.book)  # নতুন বই যোগ করার ফর্ম
    if form.process().accepted:
        response.flash = 'Book Added!'  # সফলভাবে বই যোগ হলে মেসেজ
    return dict(form=form)  # ফর্মটি ভিউতে পাঠানো হবে

এখানে দুটি অ্যাকশন রয়েছে:

  • index(): এটি বইয়ের তালিকা ভিউতে প্রদর্শন করবে।
  • add_book(): নতুন বই যোগ করার জন্য একটি ফর্ম প্রক্রিয়া করবে।

২. views/default/index.html:

<h1>All Books</h1>
<table>
    <tr>
        <th>Book Title</th>
    </tr>
    {{for book in books:}}
    <tr>
        <td>{{=book.title}}</td>
    </tr>
    {{pass}}
</table>

এটি index() অ্যাকশনের ভিউ, যা বইয়ের তালিকা প্রদর্শন করবে।

৩. views/default/add_book.html:

<h1>Add a New Book</h1>
{{=form}}  <!-- ফর্মটি ভিউতে প্রদর্শন করবে -->

এটি add_book() অ্যাকশনের ভিউ, যা বই যোগ করার ফর্ম প্রদর্শন করবে।


URL রাউটিং

Web2Py তে URL রাউটিং ডিফল্টভাবে কন্ট্রোলার এবং অ্যাকশন অনুযায়ী কাজ করে। উদাহরণস্বরূপ:


Web2Py Controllers এবং Actions এর সুবিধা

  • কোড সংগঠন: Controllers এবং Actions অ্যাপ্লিকেশনের লজিক এবং ইউজারের ইন্টারফেস আলাদা করে। এতে কোড আরও পরিষ্কার এবং সংগঠিত থাকে।
  • ডেভেলপমেন্ট স্পিড: Controllers এবং Actions এর মাধ্যমে খুব দ্রুত বিভিন্ন ফাংশন তৈরি এবং পরিচালনা করা যায়।
  • সুরক্ষা: Web2Py ডিফল্টভাবে নিরাপত্তা ব্যবস্থা (যেমন CSRF, SQL Injection) প্রয়োগ করে, যা Controllers এবং Actions এর মাধ্যমে স্বয়ংক্রিয়ভাবে পরিচালিত হয়।

সারাংশ

Web2Py তে Controllers হল অ্যাপ্লিকেশনের লজিক অংশ যা ইউজারের রিকোয়েস্ট হ্যান্ডেল করে এবং ভিউতে ডেটা পাঠায়। Actions হল কন্ট্রোলারের ফাংশন, যা ইউজারের নির্দিষ্ট রিকোয়েস্ট অনুযায়ী কাজ করে। Controllers এবং Actions ব্যবহার করে ডেভেলপাররা দ্রুত এবং কার্যকরী ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারে।

Content added By

Controller ফাইল তৈরি এবং কনফিগারেশন

243

Web2Py-তে Controller ফাইলগুলি অ্যাপ্লিকেশনের লজিক পরিচালনা করে এবং ভিউ ও মডেল এর মধ্যে যোগাযোগ স্থাপন করে। এটি একটি অ্যাপ্লিকেশন চালানোর সময় ডেটা প্রক্রিয়া করার কাজ করে এবং প্রাপ্ত ফলাফল ভিউতে পাঠায়। এখানে Web2Py তে কিভাবে Controller ফাইল তৈরি এবং কনফিগার করা হয় তা বিস্তারিতভাবে আলোচনা করা হলো।


Web2Py-তে Controller ফাইল তৈরি এবং কনফিগারেশন

Controller ফাইলের অবস্থান

Web2Py-তে Controller ফাইলগুলি সাধারণত /controllers ফোল্ডারে রাখা হয়। প্রতিটি অ্যাপ্লিকেশনের জন্য একটি Controller ফোল্ডার থাকে যেখানে অ্যাপ্লিকেশনটির সমস্ত লজিকাল ফাইল থাকে।

উদাহরণস্বরূপ:

/your_app_name
  /controllers
    default.py

এখানে default.py একটি Controller ফাইল, যা অ্যাপ্লিকেশনের লজিকের জন্য ব্যবহৃত হয়। একটি অ্যাপ্লিকেশনে আপনি একাধিক Controller ফাইল তৈরি করতে পারেন, যেমন admin.py, user.py ইত্যাদি।


Controller ফাইল তৈরি করার পদ্ধতি

  1. ফোল্ডার স্ট্রাকচার তৈরি করা: প্রথমে আপনার অ্যাপ্লিকেশন ফোল্ডারে একটি controllers ফোল্ডার তৈরি করুন যদি এটি ইতিমধ্যে না থাকে। উদাহরণ:

    /your_app_name
      /controllers
        default.py
    
  2. Controller ফাইল তৈরি করা: default.py নামক ফাইলটি তৈরি করুন এবং এর মধ্যে কন্ট্রোলার লজিক যুক্ত করুন।

    উদাহরণস্বরূপ:

    # controllers/default.py
    def index():
        return dict(message="Hello, World!")
    

    এখানে index() ফাংশন একটি dictionary অবজেক্ট ফেরত দেয়, যেখানে message কী এর মান "Hello, World!"।

  3. Controller ফাইল কনফিগারেশন: Web2Py স্বয়ংক্রিয়ভাবে Controller ফাইলগুলো শনাক্ত করে এবং তাদের কার্যকর করে। কন্ট্রোলারের মধ্যে লেখা ফাংশনগুলো URL রিকোয়েস্টের সাথে সম্পর্কিত হয়। উদাহরণস্বরূপ, যখন আপনি http://127.0.0.1:8000/your_app_name/default/index URL তে যান, তখন Web2Py index() ফাংশনটি চালায়।

Controller ফাইলে কোড লেখা

  1. প্রাথমিক ফাংশন (Basic Functions): একটি Controller ফাইলে বিভিন্ন ধরনের ফাংশন থাকতে পারে। Web2Py একাধিক রাউটিং ব্যবস্থা এবং অ্যাকশন পরিচালনা করতে পারে। উদাহরণস্বরূপ:

    # controllers/default.py
    def index():
        message = "Welcome to Web2Py!"
        return dict(message=message)
    
    def about():
        return dict(info="This is a simple app")
    

    এখানে, index() ফাংশন একটি সাদামাটা বার্তা প্রদর্শন করে এবং about() ফাংশন আরো কিছু তথ্য দেখায়।

  2. ডেটা প্রক্রিয়া (Processing Data): Controller ফাইলের মাধ্যমে আপনি ডেটা প্রক্রিয়া করতে পারেন। উদাহরণস্বরূপ, ব্যবহারকারীর ইনপুট নেয়ার জন্য ফর্ম তৈরি করতে পারেন:

    # controllers/default.py
    def form():
        form = SQLFORM.factory(
            Field('name', 'string'),
            Field('age', 'integer')
        )
        if form.process().accepted:
            response.flash = 'Form submitted successfully!'
        elif form.errors:
            response.flash = 'Please correct the errors!'
        return dict(form=form)
    

    এখানে, SQLFORM.factory ব্যবহার করে একটি ফর্ম তৈরি করা হয়েছে এবং এটি ডেটা প্রক্রিয়া করে।

  3. ডেটাবেস কুয়েরি (Database Query): আপনি মডেল (Model) ফাইলের মাধ্যমে ডেটাবেস কুয়েরি করতে পারেন এবং তা Controller এর মাধ্যমে প্রক্রিয়া করতে পারেন:

    # controllers/default.py
    def show_data():
        rows = db(db.table_name).select()
        return dict(rows=rows)
    

    এখানে db মডেল অবজেক্ট ব্যবহার করে ডেটাবেসের তথ্য select() মেথডের মাধ্যমে নেয়া হয়েছে।


Controller ফাইলে ভ্যালিডেশন এবং রিডিরেকশন

  1. ভ্যালিডেশন: ব্যবহারকারী ইনপুটের ভ্যালিডেশন করার জন্য, আপনি Web2Py এর ইন-বিল্ট ফিচার ব্যবহার করতে পারেন:

    # controllers/default.py
    def register():
        form = SQLFORM(db.auth_user)
        if form.process().accepted:
            redirect(URL('success'))
        return dict(form=form)
    

    এখানে, form.process() ইনপুট ভ্যালিডেশন এবং প্রক্রিয়াকরণ করে, এবং সফল হলে redirect() মাধ্যমে নতুন পেজে রিডিরেক্ট করে।

  2. রিডিরেকশন (Redirecting): redirect() ফাংশন ব্যবহার করে অন্য কোনো URL তে রিডিরেক্ট করা যায়:

    # controllers/default.py
    def login():
        if not session.logged_in:
            redirect(URL('login_page'))
        return dict(message="Welcome back!")
    

    এখানে, session.logged_in চেক করে, যদি লগইন না থাকে তাহলে ব্যবহারকারীকে লগইন পেজে রিডিরেক্ট করা হয়।


Controller ফাইলের কাঠামো

Web2Py এর Controller ফাইলের সাধারণ কাঠামো এইভাবে হবে:

  1. Controller ফাইলের হেডার: প্রথমে আপনি ফাইলের শীর্ষে কিছু সাধারণ সেটআপ করতে পারেন, যেমন সেশন, রেসপন্স, কনফিগারেশন ইত্যাদি।

    # controllers/default.py
    response.title = "My Web2Py App"
    
  2. ফাংশন সংজ্ঞা: তারপর প্রয়োজনীয় ফাংশনগুলো সংজ্ঞা দিন, যা বিভিন্ন HTTP রিকোয়েস্ট (GET, POST) হ্যান্ডেল করবে।

সারাংশ

Web2Py তে Controller ফাইল তৈরি করা এবং কনফিগার করা অত্যন্ত সহজ। এটি অ্যাপ্লিকেশনের লজিক নিয়ন্ত্রণ করে এবং ইউজারের ইনপুট গ্রহণ করে মডেল ও ভিউ এর মাধ্যমে প্রক্রিয়া করে ফলাফল দেখায়। Web2Py তে Controller ফাইলের মাধ্যমে আপনি ডেটা প্রক্রিয়া, ফর্ম ভ্যালিডেশন, রিডিরেকশন, এবং ডেটাবেস কুয়েরি সহজেই পরিচালনা করতে পারবেন।

Content added By

Action ফাংশন এবং তাদের কাজ

261

Web2Py তে Action ফাংশন হল কন্ট্রোলার ফাইলে নির্দিষ্ট ফাংশন যা ইউজারের রিকোয়েস্ট গ্রহণ করে এবং তার ভিত্তিতে অ্যাপ্লিকেশন লজিক প্রক্রিয়া করে। Web2Py তে প্রতিটি URL রিকোয়েস্টে একটি নির্দিষ্ট অ্যাকশন ফাংশন কল করা হয়। এই অ্যাকশন ফাংশনগুলি ওয়েব অ্যাপ্লিকেশনের কার্যকারিতা বাস্তবায়ন করে এবং কন্ট্রোলার ও ভিউয়ের মধ্যে যোগাযোগ স্থাপন করে।


Web2Py তে Action ফাংশন

Action ফাংশন এর কাজ

  1. ইউজার রিকোয়েস্ট প্রক্রিয়া করা: Action ফাংশন ইউজারের রিকোয়েস্ট গ্রহণ করে এবং তার ভিত্তিতে অ্যাপ্লিকেশন লজিক বাস্তবায়ন করে। যেমন, ফর্ম প্রক্রিয়া করা, ডেটাবেস থেকে তথ্য আনা, বা কোনো নির্দিষ্ট পেজ প্রদর্শন করা।
  2. ডেটাবেস কুয়েরি: Action ফাংশন ডেটাবেসের সাথে যোগাযোগ করে এবং প্রয়োজনীয় ডেটা প্রসেস করে। এটি ডেটা আপডেট, তৈরি, অথবা রিট্রিভ করার কাজ করে।
  3. রিডিরেকশন এবং রেসপন্স: Action ফাংশন সফলভাবে কার্যক্রম সম্পন্ন হলে ইউজারকে নতুন পেজে রিডিরেক্ট করতে পারে অথবা একটি কনফার্মেশন বার্তা প্রদান করতে পারে।

Web2Py তে Action ফাংশন তৈরি এবং ব্যবহারের উদাহরণ

উদাহরণ ১: সিম্পল Action ফাংশন

# controllers/default.py

def index():
    return dict(message="Hello, World!")

এখানে index() একটি Action ফাংশন, যা একটি সিম্পল মেসেজ "Hello, World!" ভিউতে পাঠায়। এই Action ফাংশনটি http://127.0.0.1:8000/your_app_name/default/index URL থেকে অ্যাক্সেস করা হবে।

উদাহরণ ২: ডেটাবেস কুয়েরি এবং ফলাফল প্রদর্শন

# controllers/default.py

def show_books():
    books = db().select(db.book.ALL)  # ডেটাবেস থেকে সমস্ত বই নেওয়া
    return dict(books=books)  # ভিউতে পাঠানো হবে

এখানে show_books() Action ফাংশনটি ডেটাবেস থেকে সমস্ত বই রেকর্ড রিট্রিভ করে এবং ভিউতে প্রদর্শনের জন্য পাঠায়।

উদাহরণ ৩: ফর্ম প্রক্রিয়াকরণ এবং ভ্যালিডেশন

# controllers/default.py

def add_book():
    form = SQLFORM(db.book)  # বই যোগ করার ফর্ম
    if form.process().accepted:
        response.flash = "Book Added!"
    elif form.errors:
        response.flash = "Please correct the errors!"
    return dict(form=form)  # ফর্ম ভিউতে পাঠানো হবে

এখানে add_book() Action ফাংশনটি একটি ফর্ম প্রক্রিয়া করে। ফর্মটি সফলভাবে সাবমিট হলে "Book Added!" মেসেজ দেখাবে এবং কোনো ত্রুটি থাকলে সংশোধন করার জন্য বার্তা দেখাবে।

উদাহরণ ৪: রিডিরেকশন

# controllers/default.py

def login():
    if not session.logged_in:
        redirect(URL('login_page'))
    return dict(message="Welcome back!")

এখানে login() Action ফাংশনটি চেক করে যে, ইউজার লগ ইন করেছেন কি না। যদি না করে থাকেন, তবে তাকে লগ ইন পেজে রিডিরেক্ট করা হবে।

উদাহরণ ৫: ডেটাবেসের নতুন রেকর্ড তৈরি

# controllers/default.py

def create_record():
    form = SQLFORM.factory(
        Field('name', 'string'),
        Field('email', 'string')
    )
    if form.process().accepted:
        db.records.insert(name=form.vars.name, email=form.vars.email)
        response.flash = "Record Created!"
    return dict(form=form)

এখানে create_record() Action ফাংশনটি একটি ফর্ম তৈরি করে এবং ইউজারের ইনপুট অনুযায়ী ডেটাবেসে একটি নতুন রেকর্ড সন্নিবেশিত করে।


Action ফাংশনের বিশেষ বৈশিষ্ট্য

  1. HTTP রিকোয়েস্ট হ্যান্ডলিং: Action ফাংশন HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) অনুযায়ী কাজ করে। যেমন, GET রিকোয়েস্টে ডেটা রিট্রিভ করা হয়, এবং POST রিকোয়েস্টে ডেটা সাবমিট করা হয়।
  2. ভিউতে ডেটা পাঠানো: Action ফাংশন ডেটা ভিউতে পাঠায়। এই ডেটা HTML ফরম্যাটে ইউজারের কাছে প্রদর্শিত হয়। একে dict() ব্যবহার করে পাঠানো হয়।
  3. রিডিরেকশন এবং ফ্ল্যাশ বার্তা: Action ফাংশন সফলভাবে কোনো কাজ করলে response.flash ব্যবহার করে ইউজারকে বার্তা পাঠানো হয়। এছাড়া, redirect() ফাংশন ব্যবহার করে অন্য পেজে রিডিরেক্ট করা যেতে পারে।
  4. ফর্ম ভ্যালিডেশন: Action ফাংশনগুলির মাধ্যমে আপনি ফর্ম ভ্যালিডেশন করতে পারেন। যদি ফর্মটি সঠিকভাবে প্রক্রিয়া হয়, তাহলে সফলতার বার্তা দেখানো হয়, এবং যদি কোনো ত্রুটি থাকে, তাহলে ত্রুটির বার্তা দেখানো হয়।

Action ফাংশন এবং URL রাউটিং

Web2Py তে প্রতিটি অ্যাকশন ফাংশন একটি নির্দিষ্ট URL এর সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, যদি আপনার controllers/default.py ফাইলে একটি show_books() অ্যাকশন থাকে, তাহলে আপনি এটি এই URL এর মাধ্যমে অ্যাক্সেস করতে পারবেন:

http://127.0.0.1:8000/your_app_name/default/show_books

এছাড়া, যদি আপনি create_record() অ্যাকশনটি কল করেন, তবে এটি এই URL তে পাওয়া যাবে:

http://127.0.0.1:8000/your_app_name/default/create_record

সারাংশ

Web2Py তে Action ফাংশন হল কন্ট্রোলার ফাইলে লেখা ফাংশন, যা ইউজারের রিকোয়েস্ট গ্রহণ করে এবং প্রয়োজনীয় ডেটা প্রসেস করে ভিউতে পাঠায়। এগুলি সাধারণত HTTP রিকোয়েস্টের ভিত্তিতে কাজ করে এবং ডেটাবেস অপারেশন, ফর্ম ভ্যালিডেশন, রিডিরেকশন ইত্যাদি কার্যাবলী সম্পাদন করে। Action ফাংশনগুলির মাধ্যমে আপনি ডেটা রিট্রিভ, আপডেট, ডিলিট করতে এবং ইউজারের ইনপুট প্রক্রিয়া করতে পারেন।

Content added By

URL প্যারামিটার এবং Query Strings ব্যবহার

213

Web2Py-তে URL প্যারামিটার এবং Query Strings ব্যবহার করার মাধ্যমে আপনি ইউজারের কাছ থেকে ডেটা গ্রহণ করতে পারেন এবং অ্যাপ্লিকেশনকে ডাইনামিকভাবে কনফিগার করতে পারেন। এই দুটি টেকনিক্যাল ধারণা ওয়েব অ্যাপ্লিকেশনে বিভিন্ন তথ্য পাস এবং গ্রহণের জন্য ব্যবহৃত হয়।


URL প্যারামিটার এবং Query String এর মধ্যে পার্থক্য

  • URL প্যারামিটার: URL এর অংশ হিসেবে সরাসরি কিছু তথ্য প্রেরণ করা হয়। সাধারণত এটি কন্ট্রোলার ফাংশন এবং অ্যাকশনের পরে আসে। যেমন: http://127.0.0.1:8000/app_name/controller_name/action_name/param1/param2
  • Query String: URL এর শেষে ? দিয়ে শুরু হয়ে বিভিন্ন কুইরি প্যারামিটার প্রদান করা হয়। যেমন: http://127.0.0.1:8000/app_name/controller_name/action_name?key1=value1&key2=value2

Web2Py তে URL প্যারামিটার ব্যবহার

URL প্যারামিটারগুলো Web2Py তে কন্ট্রোলার ফাংশনের মাধ্যমে সহজে অ্যাক্সেস করা যায়। এর মাধ্যমে ইউজারের রিকোয়েস্টে পাস করা ডেটা (যেমন আইডি, নাম, ইত্যাদি) কন্ট্রোলারে ব্যবহার করা হয়।

উদাহরণ

ধরা যাক আপনি একটি অ্যাপ্লিকেশনে বইয়ের তথ্য দেখাতে চান এবং বইয়ের আইডি প্যারামিটার হিসেবে URL-এ পাঠাতে চান। এর জন্য URL-এ book_id প্যারামিটার পাস করবেন, যেমন:

URL: http://127.0.0.1:8000/myapp/default/show_book/123

এখানে 123 হচ্ছে বইয়ের আইডি।

Controller ফাংশন (কন্ট্রোলার)

# controllers/default.py
def show_book(book_id):
    book = db(db.book.id == book_id).select().first()
    if book:
        return dict(book=book)
    else:
        return dict(message="Book not found")

এখানে show_book() অ্যাকশন ফাংশনে book_id প্যারামিটার আনা হয়েছে, যা URL থেকে পাস করা হবে। তারপর, db মডেল ব্যবহার করে এই আইডি দ্বারা বইয়ের তথ্য খোঁজা হয়েছে এবং ভিউতে পাঠানো হয়েছে।

View ফাইল (ভিউ)

<h1>Book Details</h1>
<p><strong>Title:</strong> {{=book.title}}</p>
<p><strong>Author:</strong> {{=book.author}}</p>

এইভাবে, URL প্যারামিটার ব্যবহার করে Web2Py অ্যাপ্লিকেশন থেকে ডেটা অ্যাক্সেস এবং প্রদর্শন করা যায়।


Web2Py তে Query String ব্যবহার

Query String URL-এ ? চিহ্নের পর বিভিন্ন প্যারামিটার পাঠানোর পদ্ধতি। এটি সাধারণত GET রিকোয়েস্টের মাধ্যমে ব্যবহার করা হয় এবং ওয়েব ব্রাউজারে ডেটা পাঠাতে ব্যবহৃত হয়।

উদাহরণ

ধরা যাক, আপনি একটি পেজে একটি ফিল্টার করার ফিচার দিতে চান যেখানে ইউজার কোনো কিপিং প্রাইস পাস করতে পারে, যেমন:

URL: http://127.0.0.1:8000/myapp/default/filter_books?price=500

এখানে price একটি কুইরি স্ট্রিং প্যারামিটার এবং তার মান 500

Controller ফাংশন

# controllers/default.py
def filter_books():
    price = request.vars.price  # Query string থেকে price প্যারামিটার নেওয়া
    books = db(db.book.price <= price).select()  # Price এর কম দাম সম্বলিত বই খোঁজা
    return dict(books=books)

এখানে request.vars.price দ্বারা Query String থেকে price প্যারামিটারটি গ্রহণ করা হয়েছে এবং সেই অনুযায়ী ডেটাবেস থেকে বইয়ের তথ্য সিলেক্ট করা হয়েছে।

View ফাইল

<h1>Books Under Price</h1>
<ul>
    {{for book in books:}}
        <li>{{=book.title}} - {{=book.price}}</li>
    {{pass}}
</ul>

এখানে Query String প্যারামিটার ব্যবহার করে সারা বিশ্বের সব বইয়ের মধ্যে মূল্য কম হওয়া বইগুলো প্রদর্শন করা হয়েছে।


URL প্যারামিটার এবং Query String এর মধ্যে পার্থক্য

  1. URL প্যারামিটার:
    • URL প্যারামিটার সাধারণত কন্ট্রোলার অ্যাকশনের অংশ হিসেবে ব্যবহৃত হয়।
    • উদাহরণ: /controller/action/param1/param2
    • এগুলো URL এর মূল অংশ হিসেবে কাজ করে।
  2. Query String:
    • Query String URL এর শেষে ? চিহ্ন দিয়ে শুরু হয় এবং প্যারামিটার ও তাদের মান দেওয়া হয়।
    • উদাহরণ: ?key1=value1&key2=value2
    • এগুলো সাধারণত ফিল্টারিং বা সার্চ ফিচারের জন্য ব্যবহৃত হয়।

Web2Py তে URL প্যারামিটার এবং Query String এর ব্যবহার

  • URL প্যারামিটার ব্যবহারের মাধ্যমে ডাইনামিক URL তৈরি করা যায় এবং কন্ট্রোলার ফাংশনকে কল করা হয়।
  • Query String ব্যবহার করে ইউজার থেকে সহজে ডেটা পাস করা যায়, যেমন সার্চ, ফিল্টারিং ইত্যাদি।

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


সারাংশ

Web2Py তে URL প্যারামিটার এবং Query String ব্যবহার করে আপনি অ্যাপ্লিকেশনে ডাইনামিক ডেটা প্রক্রিয়া এবং ইউজার থেকে ইনপুট গ্রহণ করতে পারেন। URL প্যারামিটার কন্ট্রোলারের ফাংশনে সরাসরি ব্যবহৃত হয়, এবং Query String প্যারামিটার URL এর শেষে ? চিহ্নের মাধ্যমে পাস করা হয়। এই দুটি পদ্ধতি ব্যবহার করে আপনি Web2Py অ্যাপ্লিকেশনকে আরও কার্যকরী এবং ডাইনামিক বানাতে পারবেন।

Content added By

Routing কনফিগারেশন এবং কাস্টম রাউটিং

230

Web2Py তে Routing কনফিগারেশন একটি গুরুত্বপূর্ণ অংশ, যেটি ইউজারের রিকোয়েস্ট এবং কন্ট্রোলার অ্যাকশনের মধ্যে সংযোগ স্থাপন করে। এটি URL থেকে কন্ট্রোলার এবং অ্যাকশন কল করার জন্য ব্যবহৃত হয়। Web2Py তে ডিফল্টভাবে রাউটিং ব্যবস্থা সহজ এবং স্বয়ংক্রিয়, তবে কাস্টম রাউটিং কনফিগারেশনও করা যেতে পারে যাতে আপনি আপনার অ্যাপ্লিকেশন এর URL গুলোর কাঠামো কাস্টমাইজ করতে পারেন।


Web2Py তে Routing কনফিগারেশন

১. ডিফল্ট রাউটিং

Web2Py তে ডিফল্ট রাউটিং ফরম্যাট হলো:

http://127.0.0.1:8000/your_app_name/controller_name/action_name

যেখানে:

  • your_app_name: আপনার অ্যাপ্লিকেশনের নাম
  • controller_name: কন্ট্রোলারের নাম (যেমন default, admin ইত্যাদি)
  • action_name: কন্ট্রোলারের ফাংশনের নাম, যা HTTP রিকোয়েস্টের ভিত্তিতে কল হয়

যেমন:

http://127.0.0.1:8000/myapp/default/index

এটি default.py কন্ট্রোলারের index() অ্যাকশন কল করবে।

২. কাস্টম রাউটিং

Web2Py তে আপনি ডিফল্ট রাউটিং এর কাঠামো পরিবর্তন করতে পারেন। কাস্টম রাউটিং কনফিগারেশন করার জন্য routes.py ফাইল ব্যবহার করা হয়। এই ফাইলটি আপনার অ্যাপ্লিকেশনের মূল ডিরেক্টরিতে তৈরি করতে হবে।

৩. routes.py ফাইল

Web2Py তে কাস্টম রাউটিং কনফিগার করার জন্য routes.py ফাইল তৈরি করতে হয়, যা রাউটিং কনফিগারেশন সম্পর্কিত নিয়ম এবং পাথগুলো ধারণ করে। routes.py ফাইলটি ডিফল্টভাবে আপনার অ্যাপ্লিকেশনের মূল ফোল্ডারে থাকবে এবং এতে URL প্যাটার্ন কাস্টমাইজ করা যাবে।

যেমন:

# routes.py
routes = (
    ('/custom_url', '/default/index'),
    ('/products/<category>/<id>', '/shop/product_details'),
)

এখানে দুটি কাস্টম রাউটিং উদাহরণ দেওয়া হয়েছে:

  • /custom_url URL টি /default/index অ্যাকশনে রিডিরেক্ট হবে।
  • /products/<category>/<id> URL প্যাটার্নটি কন্ট্রোলার shop এর product_details অ্যাকশনকে কল করবে, যেখানে category এবং id ভ্যারিয়েবল হিসেবে পাস হবে।

কাস্টম রাউটিং উদাহরণ

১. ডিফল্ট URL পরিবর্তন

ধরা যাক আপনি /home URL এ default/index অ্যাকশন কল করতে চান। এর জন্য routes.py ফাইলে এই কনফিগারেশন করতে হবে:

# routes.py
routes = (
    ('/home', '/default/index'),
)

এখন, আপনি http://127.0.0.1:8000/myapp/home এ গিয়ে default/index অ্যাকশন কল করতে পারবেন।

২. URL প্যারামিটার ব্যবহার

ধরা যাক আপনি একটি পণ্যের বিস্তারিত দেখানোর জন্য কাস্টম URL প্যাটার্ন ব্যবহার করতে চান, যেখানে পণ্যের ক্যাটাগরি এবং আইডি URL এর মাধ্যমে পাস হবে:

# routes.py
routes = (
    ('/product/<category>/<id>', '/shop/product_details'),
)

এখানে /product/electronics/123 URL হলে এটি shop কন্ট্রোলারের product_details অ্যাকশন কল করবে এবং categoryid প্যারামিটার পাঠাবে।

আপনার কন্ট্রোলার ফাংশনটি এভাবে হবে:

# controllers/shop.py
def product_details():
    category = request.args(0)  # category প্যারামিটার
    product_id = request.args(1)  # id প্যারামিটার
    # ডেটাবেস থেকে পণ্য অনুসন্ধান করা
    product = db(db.product.category == category & (db.product.id == product_id)).select().first()
    return dict(product=product)

এখন, আপনি http://127.0.0.1:8000/myapp/product/electronics/123 URL এ গিয়ে পণ্যের বিস্তারিত দেখতে পারবেন।

৩. URL কনভার্সন

Web2Py তে আপনি URL কনভার্সনও করতে পারেন। উদাহরণস্বরূপ, যদি আপনি URL থেকে অংশ মুছে ফেলতে চান বা অংশ যোগ করতে চান:

# routes.py
routes = (
    ('/old_url', '/new_url'),
)

এখানে, /old_url URL টিকে /new_url এ রিডিরেক্ট করা হবে।


কাস্টম রাউটিং এর সুবিধা

  1. SEO ফ্রেন্ডলি URL: আপনি URL গুলো SEO (Search Engine Optimization) এর জন্য কাস্টমাইজ করতে পারবেন, যাতে তা বেশি পছন্দযোগ্য হয়।
  2. ইউজার-ফ্রেন্ডলি URL: কাস্টম রাউটিং ব্যবহারের মাধ্যমে আপনি ইউজারদের জন্য আরও সহজ এবং বোঝার উপযোগী URL গঠন করতে পারবেন।
  3. URL প্যারামিটার ব্যবহারের সুবিধা: কাস্টম রাউটিং ব্যবহার করে URL এর মধ্যে প্যারামিটার পাস করা এবং ডায়নামিক পেজ তৈরি করা সহজ হবে।

সারাংশ

Web2Py তে Routing কনফিগারেশন ডিফল্টভাবে সহজ এবং সরল হলেও আপনি কাস্টম রাউটিং সেটআপ করতে পারেন। কাস্টম রাউটিং এর মাধ্যমে আপনি URL গুলোর কাঠামো কাস্টমাইজ করতে পারবেন এবং অ্যাপ্লিকেশনটির কার্যকারিতা আরও নিখুঁতভাবে কনফিগার করতে পারবেন। routes.py ফাইল ব্যবহার করে আপনি সহজেই রাউটিং প্যাটার্ন এবং URL গুলো কাস্টমাইজ করতে পারেন, যা SEO এবং ইউজার এক্সপেরিয়েন্স উন্নত করতে সহায়তা করে।

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

Are you sure to start over?

Loading...