আমাদের মাঝে মাঝে একটি ফাংশন বা ভিউতে একাধিক ফর্ম পরিচালনা করতে হয়। এই নিবন্ধে, আমরা দেখব কিভাবে একটি ফাংশন লিখতে হয় যা একই সময়ে এবং একই দৃশ্যে দুটি ফর্ম পরিচালনা করবে। এটা অনেক ক্ষেত্রে সুবিধাজনক; আমরা দুটিরও বেশি ফর্ম পরিচালনা করব৷
একটি জ্যাঙ্গো প্রকল্প এবং একটি অ্যাপ তৈরি করুন, আমি প্রকল্পটির নাম দিয়েছি "multipleFormHandle" এবং অ্যাপটি "formhandlingapp" হিসেবে।
settings.py-এ অ্যাপ সহ কিছু মৌলিক জিনিস করুন INSTALLED_APPS এবং প্রকল্পের url-এ অ্যাপের url অন্তর্ভুক্ত করুন।
এখন forms.py তৈরি করুন অ্যাপে এবং অ্যাপ ডিরেক্টরিতে একটি "টেমপ্লেট" ফোল্ডার। home.html যোগ করুন টেমপ্লেটে।
মাল্টি-ফর্ম_ভিউ ইনস্টল করুন লাইব্রেরি -
pip install multi_form_view
উদাহরণ
এখন urls.py-এ অ্যাপের -
from django.urls import path,include from . import views urlpatterns = [ path('',views.SchoolData.as_view(),name='home'), ]
এখানে, আমরা ভিউ সেট আপ করি এবং আমাদের ভিউসেট ব্যবহার করুন ভিউ হিসাবে। আমরা ভিউসেট ব্যবহার করতে যাচ্ছি এখানে।
models.py-এ −
from django.db import models # Create your models here. class StudentData(models.Model): name=models.CharField(max_length=100) standard=models.CharField(max_length=100) section=models.CharField(max_length=100) class TeachertData(models.Model): name=models.CharField(max_length=100) ClassTeacherOF=models.CharField(max_length=100) Salary=models.CharField(max_length=100)
আমরা দুটি মডেল তৈরি করেছি কারণ আমরা মডেলগুলিতে ফর্ম ডেটা সংরক্ষণ করতে যাচ্ছি৷
৷forms.py-এ −
from django import forms from .models import TeachertData,StudentData class StudentForm(forms.ModelForm): class Meta: model=StudentData fields="__all__" class TeacherForm(forms.ModelForm): class Meta: model=TeachertData fields="__all__"
এখানে, আমরা মডেল ফর্ম তৈরি করেছি যা আমরা আমাদের ভিউ থেকে ফ্রন্টএন্ডে রেন্ডার করব।
home.html-এ −
<!DOCTYPE html> <html> <head> <title>tut</title> </head> <body> <form method="post" enctype="multipart/form-data"> {% csrf_token %} <label><h3>Teacher</h3></label> //accessing form 1 from view {{ forms.teacher_form.as_p }} <label><h3>Student</h3></label> //accessing form 2 from view {{ forms.student_form.as_p }} <input type="submit" value="submit"/> </form> </body> </html>
এটি আমাদের ফ্রন্টএন্ড যেখানে আমরা একটি একক ফর্ম উপাদানের অধীনে এবং একটি একক জমা বোতাম সহ দুটি জ্যাঙ্গো ফর্ম রেন্ডার করি৷
আমি শৈলী যোগ করব না, কারণ এখানে আমরা ধারণা এবং এটি করার উপায় শিখছি।
views.py-এ −
from django.shortcuts import render from .forms import StudentForm,TeacherForm from django.views.generic.list import ListView from django.urls import reverse from multi_form_view import MultiModelFormView # Create your views here. class SchoolData(MultiModelFormView): form_classes = { 'student_form' : StudentForm, 'teacher_form' : TeacherForm, } template_name = 'home.html' def get_success_url(self): return reverse('home') def forms_valid(self, forms): student = forms['student_form'].save(commit=False) teacher=forms['teacher_form'].save(commit=False) return super(SchoolData, self).forms_valid(forms)
এখানে আমরা একটি ভিউসেট তৈরি করেছি , আমরা রেন্ডার করার জন্য দুটি ফর্ম সংজ্ঞায়িত করি একটি হল ছাত্র ফর্ম৷ এবং অন্যটি হল শিক্ষক ফর্ম . আমরা HTML সংজ্ঞায়িত করেছি যা আমাদের রেন্ডার করতে হবে। get_success_url-এর অধীনে একটি ফর্ম জমা দেওয়া হলে কী করতে হবে তা আমরা সংজ্ঞায়িত করি। form_valid, এ আমরা ফর্ম ডেটা সংরক্ষণ করি এবং উভয় ফর্মই সঠিক কিনা তা যাচাই করি৷
৷আউটপুট