Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Django – सिंगल व्यू में मल्टीपल फॉर्म्स को हैंडल करना


हमें कभी-कभी एक ही फंक्शन या व्यू में मल्टीपल फॉर्म्स को हैंडल करने की आवश्यकता होती है। इस लेख में, हम देखेंगे कि एक ऐसा फंक्शन कैसे लिखा जाए जो एक ही समय में और एक ही व्यू में दो फॉर्म्स को हैंडल करे। यह कई मामलों में उपयोगी है; हम दो से अधिक फॉर्म्स को भी हैंडल कर सकते हैं।

एक Django प्रोजेक्ट और एक ऐप बनाएं, मैंने प्रोजेक्ट को "multipleFormHandle" और ऐप को "formhandlingapp" नाम दिया।

settings.py INSTALLED_APPS में ऐप शामिल करने और प्रोजेक्ट के url में ऐप का url शामिल करने जैसे कुछ बुनियादी काम करें।

अब ऐप में forms.py बनाएं और ऐप डायरेक्टरी में एक "templates" फोल्डर बनाएं। इसमें home.html जोड़ें।

multi-form_view लाइब्रेरी इंस्टॉल करें:

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

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>
            {{ forms.teacher_form.as_p }}
            <label><h3>Student</h3></label>
            {{ forms.student_form.as_p }}
            <input type="submit" value="submit"/>
        </form>
    </body>
</html>

यह हमारा फ्रंटएंड है जहां हम एक सिंगल फॉर्म एलिमेंट के तहत दो Django फॉर्म्स को एक सिंगल सबमिट बटन के साथ रेंडर करते हैं।

मैं स्टाइल नहीं जोड़ूंगा, क्योंकि यहां हम कॉन्सेप्ट और उसे करने का तरीका सीख रहे हैं।

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

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 के तहत क्या करना है। forms_valid में, हम फॉर्म डेटा सेव करते हैं और वेरिफाई करते हैं कि दोनों फॉर्म्स सही हैं या नहीं।

आउटपुट

Django – सिंगल व्यू में मल्टीपल फॉर्म्स को हैंडल करना


  1. डेटा संरचना में एकल सरणी में एकाधिक सूचियाँ (Multiple Lists in a Single Array) डेटा संरचना में एकल सरणी में एकाधिक सूचियाँ (Multiple Lists in a Single Array)

    सरणी प्रतिनिधित्व मूल रूप से स्थान की बर्बादी है जब यह डेटा संग्रहीत कर रहा है जो समय के साथ बदल जाएगा। कुछ डेटा संग्रहीत करने के लिए, हम कुछ स्थान आवंटित करते हैं जो एक सरणी में कई मानों को संग्रहीत करने के लिए पर्याप्त बड़ा हो। मान लीजिए हम सरणी दोहरीकरण मानदंड (array doubling criteria) का उपयोग

  1. कई CSV फ़ाइलों को एकल पैंडास डेटाफ्रेम में कैसे मर्ज करें कई CSV फ़ाइलों को एकल पैंडास डेटाफ्रेम में कैसे मर्ज करें

    एक से अधिक CSV फ़ाइलों को एकल पैंडास डेटाफ्रेम में मर्ज करने के लिए, read_csv का उपयोग करें। पहले, आवश्यक पैंडास लाइब्रेरी आयात करें। यहां हमने pd को उपनाम के रूप में सेट किया है: import pandas as pd अब, मान लीजिए निम्नलिखित हमारी CSV फ़ाइलें हैं: Sales1.csv Sales2.csv हमने पथ को स्ट्रिंग के रूप

  1. Pandas (Matplotlib) का उपयोग करके कई टाइम-सीरीज DataFrames को सिंगल प्लॉट में प्लॉट करना Pandas (Matplotlib) का उपयोग करके कई टाइम-सीरीज DataFrames को सिंगल प्लॉट में प्लॉट करना

    Pandas का उपयोग करके कई टाइम-सीरीज डेटा फ्रेम को सिंगल प्लॉट में प्लॉट करने के लिए, हम निम्नलिखित चरण अपना सकते हैं:फिगर का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें।टाइम सीरीज के साथ एक Pandas डेटा फ्रेम बनाएं।प्लॉट के लिए टाइम सीरीज इंडेक्स सेट करें।प्लॉट पर रुपये और डॉलर प्लॉट