CherryPy ওয়েব ফ্রেমওয়ার্কে validation একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন আপনি ইউজার ইনপুট গ্রহণ করেন এবং তা প্রক্রিয়া করার জন্য ওয়েব সার্ভারে পাঠান। CherryPy কিছু বিল্ট-ইন ভ্যালিডেশন সরবরাহ করে, তবে আপনি custom validators তৈরি করেও আপনার অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় ভ্যালিডেশন লজিক প্রয়োগ করতে পারেন।
Built-in Validation in CherryPy
CherryPy ওয়েব ফ্রেমওয়ার্কের মধ্যে কিছু সাধারণ বিল্ট-ইন ভ্যালিডেশন টুল রয়েছে, যা ইউজার ইনপুটের সঠিকতা নিশ্চিত করতে সাহায্য করে। CherryPy সাধারণত প্রসেসিং টুলস বা tools ব্যবহার করে ইনপুট ভ্যালিডেশন সম্পাদন করে।
উদাহরণ: CherryPy তে বিল্ট-ইন ভ্যালিডেশন ব্যবহার
CherryPy সরাসরি ইনপুট ভ্যালিডেশন প্রদান না করলেও, আপনি request এর জন্য সরাসরি ফিল্টারিং এবং টুলস ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি ফর্ম ইনপুটের জন্য integer, string ইত্যাদি চেক করতে পারেন।
import cherrypy
class FormValidatorApp:
@cherrypy.expose
def index(self, age=None):
if age:
try:
# ইনপুটের ভ্যালিডেশন
age = int(age)
if age < 18:
return "আপনার বয়স ১৮ বছরের কম।"
return f"আপনার বয়স {age} বছর।"
except ValueError:
return "দয়া করে একটি বৈধ বয়স প্রদান করুন।"
return '''
<form method="get">
আপনার বয়স: <input type="text" name="age" />
<input type="submit" value="জমা দিন" />
</form>
'''
if __name__ == '__main__':
cherrypy.quickstart(FormValidatorApp())
এখানে, age ইনপুটের জন্য একটি সিম্পল ভ্যালিডেশন করা হচ্ছে:
- যদি ইনপুটটি integer না হয়, তাহলে একটি ValueError ত্রুটি দেখানো হবে।
- যদি বয়স ১৮ বছরের কম হয়, তাহলে একটি মেসেজ দেখানো হবে।
Custom Validators
CherryPy তে Custom Validators তৈরি করা যায়, যাতে আপনি আরো কাস্টম ভ্যালিডেশন লজিক প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, আপনি ইউজারের ইনপুটের জন্য কিছু নির্দিষ্ট শর্ত প্রয়োগ করতে পারেন, যেমন: ইমেইল ফরম্যাট, পাসওয়ার্ড শক্তি চেক, অথবা কাস্টম ফিল্ড লেংথ ভ্যালিডেশন।
Custom Validator উদাহরণ
ধরা যাক, আপনি একটি কাস্টম পাসওয়ার্ড ভ্যালিডেশন করতে চান, যা চেক করবে পাসওয়ার্ডটি কমপক্ষে ৮টি চরিত্রের এবং একটি বড় হাতের অক্ষর থাকতে হবে।
import cherrypy
import re
def password_validator(password):
if len(password) < 8:
return "পাসওয়ার্ডটি কমপক্ষে ৮টি অক্ষর হতে হবে।"
if not re.search(r'[A-Z]', password):
return "পাসওয়ার্ডে কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে।"
return None
class RegistrationApp:
@cherrypy.expose
def index(self, password=None):
if password:
validation_error = password_validator(password)
if validation_error:
return f"ভুল পাসওয়ার্ড: {validation_error}"
return "পাসওয়ার্ড সঠিক।"
return '''
<form method="get">
পাসওয়ার্ড: <input type="password" name="password" />
<input type="submit" value="জমা দিন" />
</form>
'''
if __name__ == '__main__':
cherrypy.quickstart(RegistrationApp())
এখানে:
password_validatorএকটি কাস্টম ভ্যালিডেটর ফাংশন তৈরি করা হয়েছে, যা পাসওয়ার্ডের জন্য নির্দিষ্ট শর্ত যেমন লম্বা এবং একটি বড় হাতের অক্ষর থাকতে হবে, চেক করে।- যদি পাসওয়ার্ডের শর্ত পূর্ণ না হয়, তবে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
Using CherryPy Tools for Validation
CherryPy তে আপনি নিজস্ব টুলসও তৈরি করতে পারেন যা ইনপুট ভ্যালিডেশন পরিচালনা করবে। CherryPy টুলস অনেক সময় স্ট্যাটিক ফাইল সার্ভিং, সেশন ম্যানেজমেন্ট বা ইউজার ইনপুট ভ্যালিডেশন করার জন্য ব্যবহৃত হয়।
উদাহরণ: Custom Validation Tool
import cherrypy
class CustomValidatorTool:
def __init__(self, valid_values=None):
self.valid_values = valid_values or []
def __call__(self, value):
if value not in self.valid_values:
raise cherrypy.HTTPError(400, "Invalid value provided.")
class MyApp:
valid_colors = ["red", "green", "blue"]
@cherrypy.expose
def index(self, color=None):
# Custom validation
if color:
validator = CustomValidatorTool(self.valid_colors)
validator(color)
return f"আপনি {color} রঙটি নির্বাচন করেছেন।"
return '''
<form method="get">
রঙ নির্বাচন করুন: <input type="text" name="color" />
<input type="submit" value="জমা দিন" />
</form>
'''
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে:
CustomValidatorToolএকটি কাস্টম টুল তৈরি করা হয়েছে, যা ইউজারের ইনপুট ভ্যালিডেশন করবে।- রঙের ইনপুট যদি red, green, বা blue এর মধ্যে না হয়, তাহলে একটি HTTPError 400 প্রদর্শিত হবে।
CherryPy তে ইনপুট ভ্যালিডেশন অত্যন্ত গুরুত্বপূর্ণ এবং আপনি এটি অনেক সহজে কাস্টম ভ্যালিডেটর তৈরি করে বা CherryPy এর বিল্ট-ইন টুলস ব্যবহার করে পরিচালনা করতে পারেন। আপনি বিভিন্ন ভ্যালিডেশন স্ট্রাটেজি যেমন সাধারণ ফিল্ড ভ্যালিডেশন, কাস্টম লজিক প্রয়োগ বা ইউজার ইনপুট চেকিং ব্যবহার করতে পারেন। CherryPy এ কাস্টম ভ্যালিডেশন ব্যবহারের মাধ্যমে আপনি আরও নির্ভরযোগ্য এবং সিকিউর ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more