মডিউল ৬-৮ঃ মডেল-ফর্মের মাধ্যমে ফর্ম তৈরি

মডেল-ফর্মের ব্যবহার সম্পর্কে জানতে শুরুতেই first_app এর মধ্যে forms.py নামের ফাইল ক্রিয়েট করে ফেলি

Code:: 6.8.1 first_app/forms.py

from django import forms
from first_app.models import Student

class StudentForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = '__all__'
        labels = {
            'name' : 'Student Name',
            'roll' : "Student Roll"
        }
        widgets  = {
            'name' : forms.TextInput(),
        }
        help_texts = {
            'name' : "Write your full name"
        }
        
        error_messages = {
            'name' : {'required' : 'Your name is required'}
        }
  • ৪ নং লাইনে StudentForm ক্লাস থেকে ModelForm ক্লাসকে ইনহেরিট করার মাধ্যমে StudentForm পাইথন ক্লাসটিকে একটি মডেল-ফর্মে রুপান্তর করা হয়েছে

এরপর views ফাইলে নতুন একটি ফাংশন লেখা হয়েছে StudentForm নিয়ে কাজ করার জন্য-

Code:: 6.8.2 first_app/views.py

from django.shortcuts import render, redirect
from . import models,forms
# Create your views here.
def home(request):
    student = models.Student.objects.all()
    return render(request,"home.html", {'data': student})

def delete_student(request, roll):
    std = models.Student.objects.get(pk = roll).delete()
    return redirect("homepage")

def add_student(request):
    form = forms.StudentForm()
    return render(request, 'add_student.html', {'form' : form})

ফাংশনের শেষের লাইনে কনটেক্সট ডাটা form সহ 'add_student.html' ফাইলটি রেন্ডার করা হয়েছে

add_student.html ফাইলটি ক্রিয়েট করে ফেলি-

Code:: 6.8.3 first_app/templates/add_student.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
      integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
      crossorigin="anonymous"
    />
  </head>
  <body>
    <h1>Add Student</h1>
    <div style="width:50%; margin:auto;">
      <form method="post">
        {{form.as_p}}
        <!-- <button class = "btn btn-primary" type = "submit"></button> -->
        <input class="btn btn-primary" type="submit" value="Submit">
      </form>
    </div>
        <script
      src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
      integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
      crossorigin="anonymous"
    ></script>
    <script
      src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js"
      integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
      crossorigin="anonymous"
    ></script>
    <script
      src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js"
      integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
      crossorigin="anonymous"
    ></script>
  </body>
</html>

add_student() view ফাংশনের জন্য একটি URL-প্যাটার্ন এ্যাড করে ফেলি-

Code:: 6.8.4 first_app/urls.py

from django.urls import path
from . import views
urlpatterns = [
    path('home/', views.home, name="homepage"),
    path('delete/<int:roll>', views.delete_student, name="delete_student"),
    path('add/', views.add_student, name="add_student"),
]

এখন প্রজেক্টটি রান করে http://127.0.0.1:8000/add/ URL-এ গেলে ব্রাউজারে আমাদের তৈরি জ্যাংগো মডেল-ফর্ম টি দেখতে পাব-

Last updated