মডিউল ৫-১১ঃ পাসওয়ার্ড ম্যাচিং প্রজেক্ট
এই মডিউলে আমরা একটি ছোট্র ফর্ম ভ্যালিডেশন প্রজেক্ট করে ফেলব। আমরা আসলে যাচাই করব ফর্মে ২ টা ফিল্ডে ইনপুট দেয়া ডাটা একই কি না ।
first_app/forms.py ফাইলে PasswordValidationForm নামে একটি ফর্ম ক্লাস লিখে ফেলি
Code:: 5.11.1 first_app/forms.py
...
...
...
class PasswordValidationForm(forms.Form):
name = forms.CharField(widget=forms.TextInput)
password = forms.CharField(widget=forms.PasswordInput)
confirm_password = forms.CharField(widget=forms.PasswordInput)
def clean(self):
cleaned_data = super().clean()
val_pass = self.cleaned_data['password']
val_conpass = self.cleaned_data['confirm_password']
val_name = self.cleaned_data['name']
if val_conpass != val_pass:
raise forms.ValidationError("Password doesn't match")
if len(val_name) < 15:
raise forms.ValidationError("Name must be at least 15 characters")
PasswordValidationForm ফর্ম-ক্লাসে name,password,confirm_password নামে ৩ টি ফিল্ড নেয়া হয়েছে। clean( ) ফাংশনে ফিল্ড ৩ টির ক্লিনড ডাটা যথাক্রমে val_name,val_pass, val_conpass ভেরিয়েবলে নেয়া হয়েছে।
চেক করা হয়েছে val_name ও val_pass ফিল্ডের ডেটা অসমান কি না , অসমান হয়ে থাকলে একটি ValidationError রেইজ করা হয়েছে।অনুরুপ কাজ val_name এর জন্যেও করা হয়েছে।
উপরোক্ত ফর্ম নিয়ে কাজ করার জন্য first_app/views.py ফাইলে PasswordValidation নামে একটি ফাংশন লিখে ফেলি
Code:: 5.11.2 first_app/views.py
from django.shortcuts import render
from . forms import contactForm, StudentData,PasswordValidationForm
...
...
...
def PasswordValidation(request):
if request.method == 'POST':
form = PasswordValidationForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
else:
form = PasswordValidationForm()
return render(request, './first_app/django_form.html', {'form':form})
এখন, প্রজেক্ট রান করার আগে first_app/urls.py ফাইলে URL-প্যাটার্ন নিচের মত করে এডিট করে ফেলি

এখন প্রজেক্টটি রান করে পাসোয়ার্ড ফিল্ড ২ টা তে অসমান ইনপুট দিলে ব্রাউজারে নিচের মত করে ইরোর মেসেজ দিবে এবং ফর্মটি সাবমিটেড হবে না।

অবশ্য পাসওয়ার্ড ফিল্ড ২ টিতে একই ইনপুট দিলে এরকম কিছু হবে না বরং ফর্মটি সাক্সেস্ফুলি সাবমিটেড হবে।
Last updated