Web2Py তে Custom Validators তৈরি করা একটি গুরুত্বপূর্ণ ফিচার, যা ডেভেলপারদের তাদের নিজস্ব ভ্যালিডেশন লজিক প্রয়োগ করার সুযোগ দেয়। সাধারণত, Web2Py ডিফল্ট ভ্যালিডেটর ব্যবহার করে ফর্ম ডেটা চেক করা হয়, তবে কখনও কখনও ডেভেলপারদের নিজস্ব ভ্যালিডেশন প্রয়োজন হতে পারে, যেমন বিশেষ ধরণের ডেটা ফরম্যাট বা শর্ত পূরণ করা।
এই ভ্যালিডেটরগুলি SQLFORM ফর্ম এবং ডাটাবেস ফিল্ডের জন্য ব্যবহৃত হয়। এখানে আমরা দেখব কিভাবে Web2Py তে কাস্টম ভ্যালিডেটর তৈরি করা যায় এবং তা ফর্ম এবং ডাটাবেস ফিল্ডে প্রয়োগ করা যায়।
Web2Py তে Custom Validators তৈরি করার প্রক্রিয়া
১. Custom Validator এর সাধারণ ধারণা
Web2Py তে একটি কাস্টম ভ্যালিডেটর হল একটি ফাংশন যা ইউজারের ইনপুট ভ্যালিডেট করে। যদি ইনপুটটি সঠিক না হয়, তবে ভ্যালিডেটর একটি এরর বার্তা ফেরত দেয়। আপনি যে কোন শর্তে ভ্যালিডেশন প্রয়োগ করতে পারেন, যেমন ইমেইল ফরম্যাট চেক করা, বিশেষ কিছু কিপ্টো ব্যবহার করা, ডেটা ফরম্যাট যাচাই করা ইত্যাদি।
২. Custom Validator তৈরি করা
Custom Validator ফাংশন লেখা: আপনি একটি সাধারণ Python ফাংশন তৈরি করবেন যা ইনপুট চেক করবে এবং এরর বার্তা ফেরত দেবে যদি ইনপুট সঠিক না হয়।
উদাহরণ:
# custom_validator.py def check_positive(value): if value <= 0: raise ValueError("The value must be a positive number.") return valueএখানে
check_positive()ফাংশনটি নিশ্চিত করে যে, ইনপুট সংখ্যা ০ এর চেয়ে বড় হতে হবে। যদি না হয়, তবে এটি একটি এরর বার্তা ফেরত দেয়।Custom Validator ফাংশন ব্যবহার করা: আপনি এই কাস্টম ভ্যালিডেটর ফাংশনটি Web2Py এর ফর্মে ব্যবহার করতে পারেন। ধরুন, আপনি একটি ফর্ম তৈরি করেছেন যেখানে ইউজারকে একটি পজিটিভ নম্বর প্রদান করতে বলা হচ্ছে।
# controllers/default.py def form_example(): form = SQLFORM.factory( Field('amount', 'integer', requires=check_positive) # Custom validator applied ) if form.process().accepted: response.flash = 'Form accepted!' elif form.errors: response.flash = 'Form has errors.' return dict(form=form)এখানে,
Field('amount', 'integer', requires=check_positive)অংশে আমরাcheck_positiveকাস্টম ভ্যালিডেটর যুক্ত করেছি। এই ফর্মে যে কেউ ০ বা তার কম সংখ্যা দিলে, তাতে এরর বার্তা দেখানো হবে।
৩. ফর্মে কাস্টম ভ্যালিডেটর যুক্ত করা
Web2Py তে ফর্মে কাস্টম ভ্যালিডেটর যোগ করার জন্য আপনি requires প্যারামিটার ব্যবহার করেন। কাস্টম ভ্যালিডেটরের মাধ্যমে আপনি যে কোন ধরণের শর্ত বা কনস্ট্রেনট প্রয়োগ করতে পারেন।
উদাহরণ:
def form_example():
form = SQLFORM.factory(
Field('email', 'string', requires=IS_EMAIL(error_message="Invalid email address.")),
Field('age', 'integer', requires=[IS_INT_IN_RANGE(18, 100), check_positive])
)
if form.process().accepted:
response.flash = 'Form accepted!'
elif form.errors:
response.flash = 'Form has errors.'
return dict(form=form)
এখানে দুটি ভ্যালিডেশন ব্যবহার করা হয়েছে:
IS_EMAIL: ইমেইল ঠিকানা ভ্যালিডেশন।check_positive: পজিটিভ নম্বর ভ্যালিডেশন, যা আমরা উপরে তৈরি করেছি।
৪. বিভিন্ন ধরনের কাস্টম ভ্যালিডেটর
কাস্টম ভ্যালিডেটরগুলোর মধ্যে কিছু জনপ্রিয় ভ্যালিডেশন কেস হলো:
ইমেইল ফরম্যাট চেক:
def check_valid_email(value): if '@' not in value or '.' not in value: raise ValueError("Invalid email format.") return valueপাসওয়ার্ড স্ট্রং ভ্যালিডেশন:
def check_strong_password(value): if len(value) < 8: raise ValueError("Password must be at least 8 characters long.") return valueঅফিসিয়াল ডেটা ফরম্যাট চেক:
def check_date_format(value): try: datetime.datetime.strptime(value, '%Y-%m-%d') except ValueError: raise ValueError("Incorrect date format, should be YYYY-MM-DD.") return value
সারাংশ
Web2Py তে কাস্টম ভ্যালিডেটর তৈরি করা একটি খুবই গুরুত্বপূর্ণ এবং সহজ প্রক্রিয়া। আপনি যেকোনো ধরনের ভ্যালিডেশন প্রয়োগ করতে পারেন, যেমন পজিটিভ নম্বর চেক, ইমেইল ফরম্যাট চেক, স্ট্রং পাসওয়ার্ড চেক ইত্যাদি। কাস্টম ভ্যালিডেটর ফাংশন তৈরি করে তা requires প্যারামিটার দিয়ে SQLFORM ফর্মে যুক্ত করা যায়, যা ডেভেলপারদের তাদের অ্যাপ্লিকেশনের জন্য নির্দিষ্ট ভ্যালিডেশন কাস্টমাইজ করতে সহায়তা করে।
Read more