Web2Py তে Form Submission এবং Data Handling খুবই গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীদের ইনপুট নেওয়া এবং সেই ইনপুটের উপর ভিত্তি করে ডেটা প্রক্রিয়া করতে সাহায্য করে। Web2Py তে ফর্ম তৈরি, ভ্যালিডেশন, এবং ডেটাবেসে ডেটা সন্নিবেশ করার প্রক্রিয়া খুবই সহজ এবং দ্রুত। এই প্রক্রিয়ায় Web2Py স্বয়ংক্রিয়ভাবে ডেটা প্রক্রিয়া এবং ফর্ম ভ্যালিডেশন পরিচালনা করে।
এখানে Form Submission এবং Data Handling এর মূল ধারণা এবং উদাহরণ দিয়ে ব্যাখ্যা করা হলো।
Web2Py তে Form Submission এবং Data Handling
১. SQLFORM ব্যবহার করা
Web2Py তে ফর্ম তৈরি করতে SQLFORM ব্যবহার করা হয়, যা ডাটাবেস টেবিলের সাথে যুক্ত একটি ফর্ম তৈরি করে। আপনি যে কোনো ডেটা ইনপুট ফিল্ড তৈরি করতে পারেন এবং তা ডাটাবেসে সংরক্ষণ করতে পারেন।
SQLFORM এর মাধ্যমে ফর্ম তৈরি করা খুবই সহজ এবং এতে বিল্ট-ইন ভ্যালিডেশন রয়েছে, যা ডেটা সঠিকভাবে প্রক্রিয়া করতে সহায়তা করে।
ফর্ম তৈরি করা
ধরা যাক, আপনি একটি বই যোগ করার ফর্ম তৈরি করতে চান, যাতে বইয়ের নাম, লেখক এবং প্রকাশের তারিখ ইনপুট নেওয়া হবে।
# controllers/default.py
def add_book():
form = SQLFORM.factory(
Field('title', 'string', requires=IS_NOT_EMPTY()), # বইয়ের নাম (যা ফাঁকা থাকতে পারবে না)
Field('author', 'string', requires=IS_NOT_EMPTY()), # লেখক (যা ফাঁকা থাকতে পারবে না)
Field('published_date', 'date', requires=IS_DATE()), # প্রকাশের তারিখ (ডেট ফরম্যাটে)
Field('price', 'float', requires=IS_FLOAT_IN_RANGE(0, 1000)) # মূল্য (0 থেকে 1000)
)
if form.process().accepted:
response.flash = 'Book added successfully!' # ফর্ম সফলভাবে সাবমিট হলে মেসেজ দেখাবে
elif form.errors:
response.flash = 'Please correct the errors!' # যদি কোনো ত্রুটি থাকে
return dict(form=form)
এখানে, SQLFORM.factory ব্যবহার করে একটি ফর্ম তৈরি করা হয়েছে, যেখানে বইয়ের নাম, লেখক, প্রকাশের তারিখ এবং মূল্য ইনপুট হিসেবে নেওয়া হবে। এই ফর্মে requires ফিল্ডটি ইনপুটের জন্য ভ্যালিডেশন যুক্ত করে।
২. ফর্ম ভ্যালিডেশন
Web2Py তে ফর্মের ইনপুটের জন্য ভ্যালিডেশন খুবই সহজ। আপনি requires প্যারামিটার ব্যবহার করে ইনপুট ভ্যালিডেশন করতে পারেন। উদাহরণস্বরূপ:
- IS_NOT_EMPTY(): ইনপুট ফিল্ডটি ফাঁকা থাকতে পারবে না।
- IS_DATE(): ইনপুট ফিল্ডটি সঠিক ডেট ফরম্যাটে হতে হবে।
- IS_FLOAT_IN_RANGE(): ইনপুট ফিল্ডটি নির্দিষ্ট রেঞ্জের মধ্যে থাকতে হবে (যেমন 0 থেকে 1000)।
এই ভ্যালিডেশনগুলো স্বয়ংক্রিয়ভাবে ফর্ম প্রক্রিয়া করার সময় কার্যকর হবে।
৩. ফর্ম সাবমিশন এবং ডেটাবেসে সন্নিবেশ
ফর্মটি সফলভাবে পূর্ণ হলে এবং সকল ভ্যালিডেশন পাস হলে, আপনি ডেটাবেসে ডেটা সন্নিবেশ করতে পারেন। উদাহরণস্বরূপ:
def add_book():
form = SQLFORM.factory(
Field('title', 'string', requires=IS_NOT_EMPTY()),
Field('author', 'string', requires=IS_NOT_EMPTY()),
Field('published_date', 'date', requires=IS_DATE()),
Field('price', 'float', requires=IS_FLOAT_IN_RANGE(0, 1000))
)
if form.process().accepted:
# ফর্ম সাবমিশন সফল হলে ডেটাবেসে ডেটা সন্নিবেশ
db.book.insert(
title=form.vars.title,
author=form.vars.author,
published_date=form.vars.published_date,
price=form.vars.price
)
response.flash = 'Book added successfully!'
elif form.errors:
response.flash = 'Please correct the errors!'
return dict(form=form)
এখানে, form.process().accepted দ্বারা চেক করা হয় যে ফর্মটি সফলভাবে সাবমিট হয়েছে কিনা এবং সমস্ত ভ্যালিডেশন পাস করেছে কিনা। এরপর db.book.insert ফাংশন ব্যবহার করে ফর্মের ডেটা ডেটাবেসে সন্নিবেশ করা হয়।
৪. ফর্মের বিভিন্ন অবস্থা (State)
ফর্মের বিভিন্ন অবস্থা চেক করার জন্য আপনি form.process() ব্যবহার করতে পারেন:
- form.accepted: ফর্ম সফলভাবে সাবমিট হয়েছে।
- form.errors: ফর্মে কোনো ত্রুটি রয়েছে।
- form.vars: ফর্মের ইনপুট ডেটা (যেমন বইয়ের নাম, লেখক)।
৫. ফর্ম ভিউ (Form View)
ফর্মটি দেখানোর জন্য, আপনি ভিউ ফাইল ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
<!-- views/default/add_book.html -->
<h1>Add a New Book</h1>
{{=form}} <!-- ফর্মটি এখানে রেন্ডার করা হবে -->
এটি add_book() ফাংশনের সাথে যুক্ত ভিউ, যেখানে ফর্মটি প্রদর্শন করা হবে।
৬. ডেটা আপডেট এবং ডিলিট
Web2Py তে ফর্ম ব্যবহার করে ডেটা আপডেট এবং ডিলিটও করা যায়। উদাহরণস্বরূপ:
ডেটা আপডেট:
def edit_book(): book_id = request.args(0, cast=int) book = db.book(book_id) or redirect(URL('index')) form = SQLFORM(db.book, book) if form.process().accepted: response.flash = 'Book updated successfully!' return dict(form=form)ডেটা ডিলিট:
def delete_book(): book_id = request.args(0, cast=int) db(db.book.id == book_id).delete() redirect(URL('index'))
এখানে, edit_book() ফাংশন একটি বই আপডেট করবে এবং delete_book() ফাংশন একটি বই মুছে ফেলবে।
সারাংশ
Web2Py তে Form Submission এবং Data Handling সহজ এবং কার্যকর। SQLFORM ব্যবহার করে আপনি খুব সহজে ফর্ম তৈরি করতে পারেন, যা ডেটাবেসের সাথে সংযুক্ত এবং ইনপুট ভ্যালিডেশন ও ডেটা সন্নিবেশ পরিচালনা করে। আপনি ফর্মের মাধ্যমে ডেটা সংগ্রহ, আপডেট এবং ডিলিট করতে পারেন, এবং Web2Py স্বয়ংক্রিয়ভাবে এই প্রক্রিয়াগুলি সহজ এবং দ্রুত করে তোলে।
Read more