মডিউল ৫-১০ঃ জ্যাংগো ফর্মে বিল্ট-ইন ভ্যালিডেশন-ফাংশন ব্যবহার

এই মডিউলে আমরা 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