মডিউল ৫-১০ঃ জ্যাংগো ফর্মে বিল্ট-ইন ভ্যালিডেশন-ফাংশন ব্যবহার
এই মডিউলে আমরা StudentData ফর্ম-ক্লাসে ডেটা ভ্যালিডেশনের জন্য জ্যাংগোর কিছু বিল্ট-ইন ভ্যালিডেশন-ফাংশন ব্যবহার করব।
শুরুতেই first_app/forms.py ফাইলে django.core থেকে validators ইমপোর্ট করে নেই। তারপর StudentData ফর্ম-ক্লাসটি নিচের মত করে লিখি । সেই সাথে একটি কাস্টম ভ্যালিডেশন ফাংশন len_check ও লিখে ফেলি
Code:: 5.10.1 first_app/forms.py
from django import forms
from django.core import validators
class contactForm(forms.Form):
name = forms.CharField(label="Full Name : ", help_text="Total length must be within 70 characters", required=False, error_messages={'required': 'Please enter your name.'},widget = forms.Textarea(attrs = {'id' : 'text_area', 'class' : 'class1 class 2', 'placeholder' : 'Enter your name'},))
email = forms.EmailField(label = "User Email")
age = forms.CharField(widget=forms.NumberInput)
check = forms.BooleanField()
birthday = forms.CharField(widget=forms.DateInput(attrs= {'type' : 'date'}))
appointment = forms.CharField(widget=forms.DateInput(attrs= {'type' : 'datetime-local'}))
CHOICES = [('S', 'Small'), ('M', 'Medium'), ('L', 'Large')]
size = forms.ChoiceField(choices=CHOICES, widget = forms.RadioSelect)
MEAL = [('P', 'Pepperoni'), ('M', 'Mashroom'), ('B', 'Beef')]
pizza = forms.MultipleChoiceField(choices=MEAL, widget=forms.CheckboxSelectMultiple)
def len_check(value):
if len(value) < 10:
raise forms.ValidationError("Enter a value at least 10 chars")
class StudentData(forms.Form):
name =forms.CharField(
validators=[validators.MinLengthValidator(10, message='Enter a name with at least 10 characters')])
email =forms.CharField(
widget=forms.EmailInput,
validators=[validators.EmailValidator(message="Enter a valid Email")])
age = forms.IntegerField(
validators=[validators.MaxValueValidator(34, message="age must be maximum 34"),
validators.MinValueValidator(24, message="age must be at least 24")])
file = forms.FileField(
validators=[validators.FileExtensionValidator(allowed_extensions=['pdf','png'], message = '.pdf .png Only')])
text = forms.CharField(
widget=forms.TextInput, validators=[len_check])
২১ নং লাইনে CharField name এর জন্য validators লিস্টে একটি ভ্যালিডেটর, MinLengthValidator , রেখেছি, যার প্রথম প্যারামিটার হিসেবে ভ্যালু 10 পাস করেছি কারন আমরা চাই name ফিল্ডের সর্বনিম্ন লেংথ বা ক্যারেকটারের সংখ্যা হবে ১০। ২য় প্যারামিটার message এর ভ্যালু সেট করেছি 'Enter a name with at least 10 characters' , এজন্য ইউজার যদি ১০ লেংথের থেকে ছোট কোন ইনপুট name ফিল্ডে দেয় তাহলে 'Enter a name with at least 10 characters' - ইরোর মেসেজটি ব্রাউজ্রারে শো করবে এবং ফর্মটি সাক্সেসফুলি সাবমিটেড হবে না।
email,age,file ফিল্ডের জন্যেও প্রায় অনুরুপ কাজ করা হয়েছে
৩৫ নম্বর লাইনে text ফিল্ডের জন্য validators লিস্টে আমাদের নিজেদের লেখা ফাংশন len_check রেখেছি। এভাবে আমরা জ্যাংগো ফর্ম-ফিল্ডে validators এ্যাট্রিবিউট লিস্টে নিজেদের লেখা ফাংশন রেখে কাস্টমাইজড ভ্যালিডেশন করতে পারি।
Last updated