মডিউল ৫-৮ঃ জ্যাংগো ফর্মের Attributes ও Widgets সমূহ
এই মডিউলে জ্যাংগো ফর্মের বিভিন্ন Attributes ও Widgets সমূহ সম্পর্কে জানতে contactForm ফর্ম-ক্লাসটি নিচের মত করে লিখে ফেলি
Code:: 5.8.1
first_app/forms.py
from django import forms
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)
এখানে জ্যাংগো ফর্মের এ্যাট্রিবিউট হিসেবে widget ব্যবহার করেছি ।
widget হলো HTML ইনপুট ফিল্ডের জ্যাঙ্গগো রিপ্রেজেন্টেশন।
৪ নাম্বার লাইনে widget এর সাহায্যে ফর্ম-ফিল্ড CharField কে textarea-তে রুপান্তর করা হয়েছে, উক্ত ফিল্ডের জন্য ২ টি ক্লাস , 'class1 class 2' , এ্যাড করা হয়েছে ।
view page source - থেকে widget এর কার্যকারিতা যাচাই করে নেই
৯ নাম্বার লাইনে widget ব্যবহার করে CharField appointment কে DateInput ফিল্ডে রুপান্তর করা হয়েছে ।
এখন, প্রজেক্টটি রান করার আগে view Function - DjangoForm থেকে ফাইল ইনপুট হ্যান্ডেল করার কোড রিমুভ করে ফেলি কারন এখন contactForm-এ কোনো ফাইল ইনপুট ফিল্ড নাই
Code:: 5.8.2
first_app/views.py
...
...
...
def DjangoForm(request):
if request.method == 'POST':
form = contactForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
else:
form = contactForm()
return render(request, './first_app/django_form.html', {'form':form})