TurboGears এবং Data Validation
TurboGears একটি পাইটন ওয়েব ফ্রেমওয়ার্ক যা দ্রুত এবং সহজে ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। এটি পাইটনের MVC (Model-View-Controller) আর্কিটেকচারের উপর ভিত্তি করে তৈরি এবং এর মধ্যে অনেক বিল্ট-ইন ফিচার রয়েছে যা ওয়েব ডেভেলপমেন্টকে আরও সহজ এবং স্কেলেবল করে তোলে।
Data Validation হল এমন একটি প্রক্রিয়া যার মাধ্যমে ইউজার ইনপুট ডেটা যাচাই করা হয় যাতে নিশ্চিত হওয়া যায় যে ডেটা সঠিক এবং নির্দিষ্ট শর্ত অনুযায়ী রয়েছে। TurboGears ফ্রেমওয়ার্কে Data Validation সাধারণত ফর্মের ইনপুট বা API ইনপুট যাচাই করতে ব্যবহৃত হয়। এটি WTForms বা formencode এর মতো লাইব্রেরি ব্যবহার করে করা যেতে পারে।
TurboGears এ ডেটা ভ্যালিডেশন দুটি প্রধান উপায়ে করা যেতে পারে:
- Built-in Validators: TurboGears বা তার সাথে সম্পর্কিত লাইব্রেরির প্রি-বিল্ট ভ্যালিডেটর ব্যবহার করা।
- Custom Validators: নির্দিষ্ট প্রয়োজন অনুযায়ী কাস্টম ভ্যালিডেটর তৈরি করা।
১. Built-in Validators
TurboGears ফ্রেমওয়ার্কে বেশ কিছু বিল্ট-ইন ভ্যালিডেটর রয়েছে যেগুলি বিভিন্ন ধরনের ইনপুট যাচাই করতে ব্যবহৃত হয়। যেমন: required, length, regex, email, number ইত্যাদি।
উদাহরণ: Built-in Validators ব্যবহার করা
from tg import expose, redirect
from turbojson import json
from tg.decorators import validate
from formencode import Schema
from formencode.validators import Length, Email, NotEmpty
class MyForm(Schema):
allow_extra_fields = True
name = NotEmpty(not_empty_message="Name is required")
email = Email(not_empty_message="Email is required")
password = Length(min=6, max=20, messages={'tooShort': 'Password is too short'})
@expose()
@validate(schema=MyForm(), error_handler='form_error')
def register(self, **kw):
# If validation passes, this will execute
return json({'message': 'Registration successful!'})
এখানে, MyForm ক্লাসের মধ্যে আমরা NotEmpty, Email, এবং Length ভ্যালিডেটর ব্যবহার করেছি। এই ভ্যালিডেটরগুলি ইনপুট যাচাই করে এবং যদি কোনো ইনপুট ভুল হয় তবে একটি ত্রুটি বার্তা প্রদর্শন করবে।
২. Custom Validation Rules
এটি তখন ব্যবহৃত হয় যখন আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী কোনো ভ্যালিডেশন প্রয়োজন হয় যা বিল্ট-ইন ভ্যালিডেটরের মাধ্যমে করা সম্ভব নয়। এই ক্ষেত্রে, আপনি Custom Validators তৈরি করতে পারেন।
Custom Validator তৈরি করার উদাহরণ:
from formencode import validators
class IsAdult(validators.FancyValidator):
def __init__(self, *args, **kwargs):
super(IsAdult, self).__init__(*args, **kwargs)
def _to_python(self, value, state):
if value < 18:
raise validators.Invalid('Age must be 18 or older', value, state)
return value
class MyForm(Schema):
allow_extra_fields = True
name = NotEmpty(not_empty_message="Name is required")
email = Email(not_empty_message="Email is required")
age = IsAdult()
এখানে, IsAdult নামে একটি কাস্টম ভ্যালিডেটর তৈরি করা হয়েছে যা যাচাই করে যে ইউজারের বয়স ১৮ বছরের বেশি কি না। যদি না হয়, তবে একটি ত্রুটি বার্তা প্রদান করা হবে।
৩. Error Handling and Displaying Validation Errors
TurboGears এ ডেটা ভ্যালিডেশন পাস না হলে সাধারণত form_error প্যারামিটার দিয়ে ত্রুটির বার্তা গুলি পাঠানো হয়। ত্রুটিগুলি ওয়েব পেজে ব্যবহারকারীকে প্রদর্শন করা হয়।
Error Handling উদাহরণ:
@expose()
@validate(schema=MyForm(), error_handler='form_error')
def register(self, **kw):
# If validation passes, this will execute
return json({'message': 'Registration successful!'})
def form_error(self, errors):
# Handle validation errors and return a custom response
return json({'errors': errors})
এখানে, form_error ফাংশনটি ইনপুট ভ্যালিডেশন ব্যর্থ হলে টেনে আনা ত্রুটির বার্তাগুলি দেখাবে। এটি ডেটা ভ্যালিডেশন পাস না হলে JSON ফরম্যাটে ত্রুটির তথ্য ফেরত পাঠাবে।
৪. Validation in TurboGears with WTForms
WTForms হল একটি জনপ্রিয় পাইটন লাইব্রেরি যা ফর্ম ভ্যালিডেশন এবং ফর্মের ইনপুট যাচাই করার জন্য ব্যবহৃত হয়। TurboGears WTForms লাইব্রেরি ইন্টিগ্রেট করে ভ্যালিডেশন সহজ করে তোলে।
WTForms Example:
from wtforms import Form, StringField, IntegerField
from wtforms.validators import DataRequired, Length, Email, NumberRange
class RegistrationForm(Form):
name = StringField('Name', [DataRequired(), Length(min=4, max=25)])
email = StringField('Email', [DataRequired(), Email()])
age = IntegerField('Age', [DataRequired(), NumberRange(min=18, max=99)])
এখানে, RegistrationForm ক্লাসটি WTForms এর মাধ্যমে তৈরি করা হয়েছে এবং বিভিন্ন বিল্ট-ইন ভ্যালিডেটর যেমন DataRequired, Length, Email, এবং NumberRange ব্যবহৃত হয়েছে।
সারাংশ
Data Validation TurboGears ফ্রেমওয়ার্কে একটি গুরুত্বপূর্ণ অংশ, যা নিশ্চিত করে যে ব্যবহারকারী থেকে আসা ডেটা সঠিক এবং নির্দিষ্ট শর্ত পূর্ণ করছে। TurboGears-এ Built-in Validators ব্যবহার করে সহজেই ফর্মের ইনপুট যাচাই করা যায় এবং Custom Validators তৈরি করে আরো কাস্টম শর্তে যাচাই করা যায়। ওয়েব ফ্রেমওয়ার্কের মাধ্যমে ডেটা ভ্যালিডেশন সহজ করার জন্য TurboGears অনেক শক্তিশালী উপকরণ প্রদান করে, যা ডেভেলপারদের দ্রুত এবং কার্যকরীভাবে কোড লিখতে সহায়তা করে।
Read more