Forms তৈরি এবং ফর্ম এলিমেন্টস ব্যবহার

Forms এবং Validation - ওয়েব২পাই (Web2Py) - Web Development

277

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

এখানে Web2Py তে ফর্ম তৈরি এবং ফর্ম এলিমেন্টস ব্যবহার করার পদ্ধতি বিস্তারিতভাবে আলোচনা করা হলো।


Web2Py তে Forms তৈরি

১. ফর্ম তৈরি করতে SQLFORM ব্যবহার করা

Web2Py তে ফর্ম তৈরি করতে সাধারণত SQLFORM ক্লাস ব্যবহার করা হয়। এটি ডাটাবেসের টেবিলের সাথে সংযুক্ত ফর্ম তৈরি করে এবং স্বয়ংক্রিয়ভাবে ভ্যালিডেশন এবং প্রক্রিয়াকরণ করে।

উদাহরণ ১: একটি সিম্পল ফর্ম তৈরি করা।

ধরা যাক, আপনি একটি বইয়ের নাম ইনপুট নিতে চান।

controllers/default.py:
def add_book():
    form = SQLFORM.factory(
        Field('title', 'string', label='Book Title'),
        Field('author', 'string', label='Author')
    )
    if form.process().accepted:
        response.flash = 'Book Added Successfully!'
    elif form.errors:
        response.flash = 'There was an error in the form.'
    
    return dict(form=form)

এখানে:

  • Field: ফর্ম এলিমেন্ট তৈরি করতে ব্যবহৃত হয়। আমরা দুটি ফিল্ড তৈরি করেছি: title এবং author
  • form.process(): ফর্মটি প্রক্রিয়া এবং ভ্যালিডেশন করে। যদি ফর্মটি সফলভাবে সাবমিট হয়, তবে accepted ব্যাকগ্রাউন্ডে True হবে, অন্যথায় errors ব্যাকগ্রাউন্ডে থাকবে।
views/default/add_book.html:
<h2>Add a New Book</h2>
{{=form}}

এখানে, {{=form}} সিনট্যাক্সটি ফর্মটিকে ভিউতে রেন্ডার করবে।


২. ফর্ম এলিমেন্টস ব্যবহার

Web2Py তে বিভিন্ন ধরনের ফর্ম এলিমেন্টস ব্যবহার করা যায়, যা ইউজারের ইনপুট নেওয়ার জন্য বিভিন্ন ফিল্ড প্রদান করে।

ফর্ম এলিমেন্টস এর উদাহরণ:

  1. Text Field:

    Field('title', 'string', label='Book Title')
    
  2. Text Area: যদি আপনি বড় টেক্সট ইনপুট চান:

    Field('description', 'text', label='Description')
    
  3. Integer Field: যদি আপনি ইনপুট হিসেবে পূর্ণসংখ্যা চান:

    Field('price', 'integer', label='Price')
    
  4. Date Field: তারিখ ইনপুট নেয়ার জন্য:

    Field('publish_date', 'date', label='Publish Date')
    
  5. Select (Drop-down) Field: ব্যবহারকারীকে কিছু অপশন থেকে নির্বাচন করার জন্য:

    Field('genre', 'string', requires=IS_IN_SET(['Fiction', 'Non-fiction', 'Sci-fi', 'Romance']))
    
  6. Boolean Field (Checkbox): যদি আপনি কোন নির্দিষ্ট ভ্যালু চেকবক্সের মাধ্যমে নিতে চান:

    Field('is_available', 'boolean', label='Is Available')
    
  7. File Field: ফাইল আপলোড করার জন্য:

    Field('cover_image', 'upload', label='Cover Image')
    
  8. Password Field: ব্যবহারকারী পাসওয়ার্ড ইনপুট করলে:

    Field('password', 'password', label='Password')
    

৩. ফর্ম ভ্যালিডেশন

Web2Py তে ফর্ম ভ্যালিডেশন স্বয়ংক্রিয়ভাবে করা হয়, তবে আপনি নিজেও কিছু ভ্যালিডেশন কাস্টমাইজ করতে পারেন। requires প্যারামিটার ব্যবহার করে আপনি ফর্ম ফিল্ডের জন্য বিভিন্ন ভ্যালিডেশন যুক্ত করতে পারেন।

উদাহরণ ১: একটি সিম্পল ভ্যালিডেশন ব্যবহার করা।

def add_book():
    form = SQLFORM.factory(
        Field('title', 'string', requires=IS_NOT_EMPTY(), label='Book Title'),
        Field('author', 'string', requires=IS_NOT_EMPTY(), label='Author')
    )
    if form.process().accepted:
        response.flash = 'Book Added Successfully!'
    elif form.errors:
        response.flash = 'There was an error in the form.'
    
    return dict(form=form)

এখানে, IS_NOT_EMPTY() ভ্যালিডেশনটি নিশ্চিত করে যে ফর্ম ফিল্ডগুলো খালি থাকবে না।

উদাহরণ ২: ইমেইল ভ্যালিডেশন:

Field('email', 'string', requires=IS_EMAIL(), label='Email Address')

এখানে, IS_EMAIL() ভ্যালিডেশন নিশ্চিত করবে যে ব্যবহারকারী সঠিকভাবে একটি ইমেইল ঠিকানা প্রদান করছে।


৪. ফর্মের সাথে পুশ ডেটা

Web2Py তে আপনি ফর্মের সাথে ডেটা পুশ করতে পারেন। উদাহরণস্বরূপ, আপনি যদি ডাটাবেস থেকে কিছু প্রি-পপুলেটেড ডেটা দেখাতে চান, তবে আপনি সেটি ফর্মের মাধ্যমে করতে পারবেন।

উদাহরণ ১: ডাটাবেস থেকে প্রি-পপুলেটেড ডেটা ব্যবহার করা।

def add_book():
    genres = db().select(db.genre.name)  # ডাটাবেস থেকে genres নিয়ে আসা
    form = SQLFORM.factory(
        Field('title', 'string', label='Book Title'),
        Field('genre', 'string', requires=IS_IN_SET([g.name for g in genres]), label='Genre')
    )
    if form.process().accepted:
        response.flash = 'Book Added Successfully!'
    return dict(form=form)

এখানে, IS_IN_SET ব্যবহার করে ডাটাবেস থেকে প্রাপ্ত genres নামের তালিকা ব্যবহারকারীকে পছন্দ করতে দেওয়া হয়েছে।


৫. ফর্ম সাবমিট এবং রিডিরেকশন

Web2Py তে ফর্ম সাবমিট হওয়ার পর আপনি ব্যবহারকারীকে অন্য পেজে রিডিরেক্ট করতে পারেন।

উদাহরণ:

def add_book():
    form = SQLFORM(db.book)
    if form.process().accepted:
        redirect(URL('index'))  # সফল সাবমিট হলে ইন্ডেক্স পেজে রিডিরেক্ট
    return dict(form=form)

এখানে, redirect(URL('index')) ফাংশনটি সফল সাবমিট হলে ব্যবহারকারীকে index() অ্যাকশনের পেজে রিডিরেক্ট করে।


সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...