Web2Py তে Data Validation এবং Error Handling অত্যন্ত গুরুত্বপূর্ণ দুটি ফিচার, যা অ্যাপ্লিকেশনের নির্ভরযোগ্যতা এবং ইউজার এক্সপেরিয়েন্স উন্নত করতে সাহায্য করে। Data Validation ব্যবহারকারীর ইনপুট যাচাই করতে সাহায্য করে এবং Error Handling অ্যাপ্লিকেশন চলাকালীন সময়ে যে কোনো ভুল বা সমস্যা পরিচালনা করতে ব্যবহৃত হয়।
এখানে Web2Py তে Data Validation এবং Error Handling ব্যবহারের বিভিন্ন পদ্ধতি ব্যাখ্যা করা হলো।
Data Validation in Web2Py
Web2Py তে ডেটা ভ্যালিডেশন নিশ্চিত করতে Field এবং SQLFORM ব্যবহার করা হয়। Field হল ডাটাবেস টেবিলের ফিল্ড এবং SQLFORM হল একটি ফর্ম যা ইউজারের ইনপুট গ্রহণ করে এবং তা ভ্যালিডেশন করে।
১. Field Validation
Web2Py ডাটাবেস ফিল্ডের জন্য ভ্যালিডেশন নির্ধারণ করতে বিভিন্ন বিল্ট-ইন ফাংশন সরবরাহ করে। উদাহরণস্বরূপ, আপনি Field অবজেক্টে ভ্যালিডেশন শর্ত সংযুক্ত করতে পারেন যেমন টাইপ, দৈর্ঘ্য, এবং নিয়মিত অভিব্যক্তি (Regex)।
# models/db.py
db.define_table('person',
Field('name', 'string', requires=IS_NOT_EMPTY()),
Field('email', 'string', requires=[IS_EMAIL(), IS_NOT_EMPTY()]),
Field('age', 'integer', requires=IS_INT_IN_RANGE(18, 100))
)
এখানে:
- IS_NOT_EMPTY(): নিশ্চিত করে যে ফিল্ডটি খালি নয়।
- IS_EMAIL(): ইমেইল ঠিকানা যাচাই করে।
- IS_INT_IN_RANGE(18, 100): নিশ্চিত করে যে বয়স ১৮ থেকে ১০০ এর মধ্যে থাকবে।
২. SQLFORM Validation
Web2Py তে আপনি SQLFORM ব্যবহার করে ফর্ম তৈরি করতে পারেন এবং সেগুলির জন্য ভ্যালিডেশন করতে পারেন। উদাহরণস্বরূপ:
# controllers/default.py
def register():
form = SQLFORM(db.person)
if form.process().accepted:
response.flash = 'Registration successful'
elif form.errors:
response.flash = 'Please fix the errors'
return dict(form=form)
এখানে, SQLFORM ফর্মটি স্বয়ংক্রিয়ভাবে db.person টেবিলের ফিল্ডের জন্য নির্ধারিত ভ্যালিডেশন চেক করবে। যদি ফর্মটি সফলভাবে প্রক্রিয়া হয়, তবে একটি ফ্ল্যাশ মেসেজ দেখানো হবে এবং যদি ত্রুটি থাকে, তবে ব্যবহারকারীকে সেগুলি সংশোধন করতে বলা হবে।
৩. Custom Validation
আপনি কাস্টম ভ্যালিডেশনও তৈরি করতে পারেন, যেখানে আপনি নিজের নির্দিষ্ট শর্ত যোগ করতে পারেন। যেমন:
# controllers/default.py
def custom_validation():
form = SQLFORM.factory(
Field('username', 'string'),
Field('password', 'password')
)
def password_strength(value):
if len(value) < 8:
return 'Password must be at least 8 characters long'
return None
form.vars.password.requires.append(password_strength)
if form.process().accepted:
response.flash = 'Form Accepted'
return dict(form=form)
এখানে, একটি কাস্টম ফাংশন password_strength তৈরি করা হয়েছে, যা পাসওয়ার্ডের দৈর্ঘ্য যাচাই করে।
Error Handling in Web2Py
Web2Py তে Error Handling সহজভাবে করা যায়, এবং এটি অ্যাপ্লিকেশনের যেকোনো ত্রুটি বা সমস্যার জন্য সমাধান প্রদান করে। এখানে কিছু সাধারণ Error Handling পদ্ধতি দেওয়া হলো:
১. Try-Except ব্লক
Python এর মতোই, Web2Py তে try-except ব্লক ব্যবহার করে কোডের ত্রুটি আটকানো এবং সেগুলির উপযুক্ত সমাধান করা যায়।
# controllers/default.py
def process_data():
try:
# কিছু কোড যেখানে ত্রুটি হতে পারে
result = 10 / 0 # এই লাইনটি ZeroDivisionError তৈরি করবে
except ZeroDivisionError as e:
response.flash = "Cannot divide by zero!"
return dict(error=e)
except Exception as e:
response.flash = "An unexpected error occurred!"
return dict(error=e)
return dict(result=result)
এখানে, ZeroDivisionError এর জন্য একটি কাস্টম বার্তা দেখানো হচ্ছে, এবং অন্য যে কোনো অপ্রত্যাশিত ত্রুটির জন্য একটি সাধারণ বার্তা দেখানো হচ্ছে।
২. HTTP 404 এবং 500 Error Handling
Web2Py তে যদি কোনো পেজ পাওয়া না যায় (404 Error) অথবা অ্যাপ্লিকেশন ক্র্যাশ করে (500 Error), আপনি কাস্টম পেজ তৈরি করতে পারেন যা ব্যবহারকারীকে বুঝিয়ে দেবে কী সমস্যা হয়েছে।
# controllers/default.py
def custom_404():
response.status = 404
return "Page not found!"
def custom_500():
response.status = 500
return "Internal Server Error!"
আপনি এই ফাংশনগুলোকে routes.py ফাইলে রাউট করে HTTP 404 এবং 500 ত্রুটির জন্য কাস্টম পেজ প্রদর্শন করতে পারেন।
৩. Flash Messages
Web2Py তে response.flash ব্যবহার করে আপনি ত্রুটির বার্তা বা তথ্য বার্তা ইউজারকে দেখাতে পারেন। এটি খুবই সহায়ক যখন ফর্ম ভ্যালিডেশন বা কোনো অন্যান্য কাজের জন্য ত্রুটি হয়।
# controllers/default.py
def login():
form = SQLFORM.factory(
Field('username'),
Field('password', 'password')
)
if form.process().accepted:
response.flash = 'Login successful'
elif form.errors:
response.flash = 'Please correct the errors'
return dict(form=form)
এখানে, response.flash ব্যবহার করে ইউজারকে ফর্মের অবস্থা জানানো হচ্ছে।
সারাংশ
Web2Py তে Data Validation এবং Error Handling এর মাধ্যমে আপনি অ্যাপ্লিকেশনের সঠিকতা নিশ্চিত করতে পারেন এবং ইউজারের ভালো অভিজ্ঞতা প্রদান করতে পারেন।
- Data Validation: ব্যবহারকারীর ইনপুট যাচাই করতে
Field,SQLFORMএবং কাস্টম ভ্যালিডেশন ব্যবহার করা হয়। - Error Handling:
try-exceptব্লক, HTTP ত্রুটি (404, 500) কাস্টম পেজ এবংresponse.flashবার্তা ব্যবহারের মাধ্যমে ত্রুটির সঠিক সমাধান প্রদান করা হয়।
এ দুটি বৈশিষ্ট্য অ্যাপ্লিকেশনের গুণমান বাড়ায় এবং ইউজার ইন্টারফেসে একটি পেশাদার অভিজ্ঞতা তৈরি করে।
Read more