जानें कि Django में CRUD और क्लास-आधारित विचारों के सिद्धांतों का उपयोग करके एक कार्य प्रबंधक ऐप कैसे बनाया जाए।

Django की प्रमुख विशेषताओं में से एक CRUD (क्रिएट, रीड, अपडेट, डिलीट) ऑपरेशंस के शीर्ष पर प्रोजेक्ट बनाने के लिए इसका अंतर्निहित समर्थन है। जबकि Django के क्लास-आधारित दृश्य वेब एप्लिकेशन बनाने का तेज़, आसान और लचीला तरीका प्रदान करते हैं, कई डेवलपर्स अभी भी फ़ंक्शन-आधारित दृश्यों का उपयोग करते हैं।

वर्ग-आधारित दृश्य फ़ंक्शन-आधारित दृश्यों की तुलना में कई लाभ प्रदान करते हैं, जिनमें वंशानुक्रम, कोड संरचना, कोड पुन: प्रयोज्यता और बहुत कुछ शामिल हैं। हालाँकि कक्षा-आधारित विचारों को लागू करना थोड़ा जटिल लग सकता है, यह मार्गदर्शिका एक कार्य प्रबंधक ऐप बनाकर और चरण-दर-चरण निर्देश प्रदान करके अवधारणा को समझने में आपकी सहायता करेगी।

Django में कक्षा-आधारित दृश्य क्या हैं?

Django में, दृश्य हैं पायथन कार्य करता है जो एक वेब अनुरोध लेता है और एक वेब प्रतिक्रिया लौटाता है। कक्षा-आधारित दृश्य (सीबीवी) फ़ंक्शंस के बजाय पायथन कक्षाओं का उपयोग करके Django में विचारों को परिभाषित करने का एक वैकल्पिक तरीका है।

सीबीवी के कई फायदे हैं, जैसे बेहतर कोड संगठन, कोड का आसान पुन: उपयोग और मौजूदा विचारों में विविधताएं बनाने के लिए विरासत का उपयोग करने की क्षमता। सीबीवी जैसे अंतर्निहित तरीके भी प्रदान करते हैं पाना() और डाक() वे विधियाँ जिन्हें आप कस्टम व्यवहारों के लिए अधिलेखित कर सकते हैं।

इस आलेख में प्रयुक्त कोड इसमें उपलब्ध है गिटहब रिपॉजिटरी.

क्लास-आधारित दृश्य Django में उपलब्ध हैं

Django लोकप्रिय उपयोग के मामलों के लिए कुछ अंतर्निहित सीबीवी प्रदान करता है, जैसे वस्तुओं की सूची प्रदर्शित करना या नई सूची बनाना। इनमें से कुछ अंतर्निर्मित सीबीवी हैं:

  1. लिस्ट व्यू: यह दृश्य एक मॉडल से प्राप्त वस्तुओं की एक सूची प्रस्तुत करता है। उदाहरण के लिए, एक पेज जो ब्लॉग में उपलब्ध सभी पोस्टों को सूचीबद्ध करता है, का उपयोग करेगा लिस्ट व्यू।
  2. विस्तार से देखें: यह दृश्य एक मॉडल से प्राप्त एकल वस्तु का विस्तृत दृश्य प्रस्तुत करता है। आप एक का उपयोग कर सकते हैं विस्तार से देखें ब्लॉग ऐप में विशिष्ट पोस्ट का विवरण प्रदर्शित करने के लिए।
  3. दृश्य बनाएं: यह दृश्य एक नई वस्तु बनाने के लिए एक फॉर्म प्रस्तुत करता है और फॉर्म सबमिशन को संभालता है। उदाहरण के लिए, किसी कार्य प्रबंधक ऐप में, आप नए कार्य बनाने के लिए इस दृश्य का उपयोग करेंगे।
  4. हटाएँ दृश्य: यह दृश्य किसी ऑब्जेक्ट को हटाने के लिए एक पुष्टिकरण पृष्ठ प्रस्तुत करता है और पृष्ठ हटाने को संभालता है।
  5. अद्यतन दृश्य: यह दृश्य किसी मौजूदा ऑब्जेक्ट को अपडेट करने के लिए एक फॉर्म प्रस्तुत करता है और फॉर्म को सबमिट करने का प्रबंधन करता है।

Django अन्य विचार भी प्रदान करता है, जिनमें शामिल हैं टेम्पलेट दृश्य, पुनर्निर्देशन दृश्य, और प्रपत्र दृश्य. आप उल्लेख कर सकते हैं Django का दस्तावेज़ीकरण कक्षा-आधारित विचारों पर विस्तृत जानकारी के लिए।

Django क्लास-आधारित दृश्यों के साथ एक टास्क मैनेजर ऐप बनाएं

टास्क मैनेजर ऐप जैसे ऐप बनाने से आपको यह समझने में मदद मिलेगी कि सीबीवी के साथ सीआरयूडी संचालन कैसे लागू किया जाए। एक कार्य प्रबंधक में ऐसी विशेषताएं होती हैं जो उपयोगकर्ताओं को कार्य बनाने, अद्यतन करने, हटाने और पढ़ने की अनुमति देती हैं। ये सुविधाएँ CRUD संचालन के अनुरूप हैं। निम्नलिखित चरण आपको Django CBVs के साथ एक कार्य प्रबंधक ऐप बनाने में मदद करेंगे।

एक Django प्रोजेक्ट सेट करें

Django के साथ एक कार्य प्रबंधक ऐप बनाने के लिए, आपको इन चरणों का पालन करके शुरुआत करनी चाहिए:

  1. अपने में Django इंस्टॉल करें पायथन आभासी वातावरण इस आदेश के साथ:
    पिप इंस्टॉल डीजेंगो
  2. एक Django प्रोजेक्ट बनाएं. निम्नलिखित कमांड नामक एक प्रोजेक्ट बनाएगा प्रोजेक्ट_कोर.
    django-एडमिन स्टार्टप्रोजेक्ट प्रोजेक्ट_कोर।
  3. नामक एक ऐप बनाएं कार्य प्रबंधक.
    पायथन मैनेजहोम स्टार्टअप टास्क_मैनेजर
  4. आपके में सेटिंग्स.py अपने ऐप का नाम इसमें जोड़ें इंस्टॉल_ऐप्स सूची।
    INSTALLED_APPS = [
    'कार्य प्रबंधक',
    ]
  5. खोलें urls.py अपनी प्रोजेक्ट निर्देशिका में फ़ाइल करें और अपने लिए URL कॉन्फ़िगर करें कार्य प्रबंधक अनुप्रयोग:
    से django.urls आयात पथ, सम्मिलित करें

    यूआरएलपैटर्न = [
    पथ('', शामिल करना('task_manager.urls')),
    ]

अपने कार्य प्रबंधक ऐप के लिए एक मॉडल बनाएं

आपकी ऐप निर्देशिका में (या कार्य प्रबंधक फ़ोल्डर), अपना खोलें models.py फ़ाइल करें और अपने कार्य प्रबंधक ऐप के लिए एक मॉडल बनाएं। यहां एक नमूना मॉडल है जिसका आप उपयोग कर सकते हैं:

से django.db आयात मॉडल

कक्षाकाम(मॉडल। नमूना):
शीर्षक = मॉडल. चारफ़ील्ड (अधिकतम लंबाई=200)
विवरण = मॉडल. पाठ्य से भरा()
पूर्ण = मॉडल। बूलियनफ़ील्ड (डिफ़ॉल्ट=असत्य)
create_at = मॉडल. दिनांक समय फ़ील्ड (auto_now_add=सत्य)

इस आदेश के साथ अपने मॉडल को माइग्रेट करें:

पायथन मैनेज.पी मेकमाइग्रेशन && पायथन मैनेज.पी माइग्रेट

अपने ऐप के लिए एक Django फॉर्म बनाएं

आपके पास संभालने के लिए एक फॉर्म होना चाहिए बनाएं और अद्यतन परिचालन. अपनी ऐप निर्देशिका में, नामक एक फ़ाइल बनाएं form.py. यहाँ एक उदाहरण है:

से django आयात फार्म
से ।मॉडल आयात काम

कक्षाकार्य प्रपत्र(रूप. मॉडलफॉर्म):
कक्षामेटा:
मॉडल = कार्य
फ़ील्ड = ['शीर्षक', 'विवरण', 'पुरा होना']

विजेट्स = {
'शीर्षक': रूप. टेक्स्टइनपुट (attrs={'कक्षा': 'रूप-नियंत्रण',}),
'विवरण': रूप. टेक्स्टएरिया (attrs={'कक्षा': 'रूप-नियंत्रण',}),
'पुरा होना': रूप. चेकबॉक्सइनपुट (attrs={'कक्षा': 'फॉर्म-चेक-इनपुट'}),
}

उपरोक्त कोड में एक क्लास है जिसे कहा जाता है कार्य प्रपत्र जो प्रपत्र के फ़ील्ड और विजेट को परिभाषित करता है। यह उपयोग किए जाने वाले मॉडल को भी निर्दिष्ट करता है।

प्रत्येक CRUD ऑपरेशन के लिए Django दृश्य बनाएं

सीबीवी के साथ एक बुनियादी सीआरयूडी ऐप को सभी परिचालनों को प्रभावी ढंग से संभालने के लिए कम से कम चार दृश्यों की आवश्यकता होती है। अगले कुछ चरण आपको दिखाएंगे कि उन्हें कैसे बनाया जाए।

आवश्यक मॉड्यूल और पैकेज आयात करें

अपनी खोलो view.py फ़ाइल करें और निम्नलिखित आयात करें:

से django.views.generic आयात लिस्ट व्यू, डिटेल व्यू, क्रिएट व्यू, अपडेट व्यू, डिलीट व्यू
से django.urls आयात उलटा_आलसी
से ।मॉडल आयात काम
से .रूप आयात कार्य प्रपत्र

उपरोक्त कोड पाँच सीबीवी आयात करता है। यह आयात भी करता है उलटा_आलसी फॉर्म जमा करने के बाद उपयोगकर्ता को एक निर्दिष्ट यूआरएल पर रीडायरेक्ट करने के लिए। अंत में, यह आयात करता है काम मॉडल, और कार्य प्रपत्र पहले बनाया गया.

मॉडल ऑब्जेक्ट को सूचीबद्ध करने के लिए एक दृश्य बनाएं

एक कार्य प्रबंधक ऐप में उपयोगकर्ता द्वारा बनाए गए सभी कार्यों को सूचीबद्ध करने वाला एक पृष्ठ होना चाहिए। इसके लिए एक दृश्य बनाने के लिए, आपको इसका उपयोग करना चाहिए लिस्ट व्यू. यहाँ एक उदाहरण है:

कक्षाकार्य सूची दृश्य(लिस्ट व्यू):
मॉडल = कार्य
टेम्पलेट_नाम = 'टास्क_मैनेजर/टास्क_लिस्ट.html'
context_object_name = 'कार्य'

उपरोक्त दृश्य तीन विशेषताओं को परिभाषित करता है जो हैं:

  1. नमूना: यह विशेषता परिभाषित करती है कि उस विशिष्ट दृश्य के लिए किस मॉडल का उपयोग करना है।
  2. टेम्पलेट नाम: यह विशेषता Django को बताती है कि ब्राउज़र में कौन सा टेम्पलेट प्रस्तुत करना है।
  3. context_object_name: यह विशेषता उस नाम को परिभाषित करती है जो टेम्पलेट को मॉडल में ऑब्जेक्ट की सूची तक पहुंचने देती है।

अधिकांश सीबीवी में ये तीन विशेषताएँ शामिल होंगी।

कार्य विवरण को संभालने के लिए एक दृश्य बनाएं

उपयोगकर्ता द्वारा बनाए गए प्रत्येक कार्य में उसका विवरण दिखाने वाला एक पृष्ठ होना चाहिए। इसे संभालने के लिए आदर्श सीबीवी है विवरण देखें. यहाँ एक सरल उदाहरण है:

कक्षाकार्य विवरण दृश्य(विस्तार से देखें):
मॉडल = कार्य
टेम्पलेट_नाम = 'task_manager/task_detail.html'

कार्य निर्माण के लिए एक दृश्य बनाएं

नए कार्यों के निर्माण या जोड़ने को संभालने के लिए एक दृश्य बनाएं। यह है बनाएं सीआरयूडी संचालन का हिस्सा है, और इसके लिए सही दृष्टिकोण है दृश्य बनाएं. इसका उपयोग कैसे करें यहां बताया गया है:

कक्षाटास्कक्रिएटव्यू(क्रिएटव्यू):
मॉडल = कार्य
फॉर्म_क्लास = टास्कफॉर्म
टेम्पलेट_नाम = 'टास्क_मैनेजर/टास्क_फॉर्म.html'
सफलता_यूआरएल = रिवर्स_आलसी('कार्य सूची')

उपरोक्त कोड दो नई विशेषताएँ प्रस्तुत करता है: कक्षा से और सफलता_यूआरएल.

कक्षा से विशेषता दृश्य को बताती है कि किस फॉर्म क्लास को प्रस्तुत करना है और उसके संचालन के लिए उपयोग करना है।

सफलता_यूआरएल निर्दिष्ट करता है कि फ़ॉर्म सबमिट करने के बाद उपयोगकर्ता को रीडायरेक्ट कैसे करना है। इसका उपयोग करता है उलटा_आलसी फ़ंक्शन जो URL पथ का नाम लेता है।

संपादन कार्यों के लिए एक दृश्य बनाएं

अपने उपयोगकर्ताओं को अपने कार्यों को संपादित या अपडेट करने की अनुमति देने के लिए, आपको एक ऐसा दृश्य बनाना चाहिए जो इस तरह दिखे:

कक्षाकार्य अद्यतन दृश्य(अद्यतन दृश्य):
मॉडल = कार्य
फॉर्म_क्लास = टास्कफॉर्म
टेम्पलेट_नाम = 'टास्क_मैनेजर/टास्क_फॉर्म.html'
सफलता_यूआरएल = रिवर्स_आलसी('कार्य सूची')

उपरोक्त दृश्य के समान है टास्कक्रिएटव्यू पहले बनाया गया. एकमात्र अंतर इसके उपयोग का है अद्यतन दृश्य.

डिलीट ऑपरेशंस को संभालने के लिए एक व्यू बनाएं

अपने उपयोगकर्ताओं को जब चाहें कार्यों को हटाने की अनुमति देने के लिए, आपको इसका उपयोग करना चाहिए हटाएँ दृश्य सीबीवी. यहाँ एक उदाहरण है:

कक्षाटास्कडिलीट व्यू(हटाएँ दृश्य):
मॉडल = कार्य
टेम्पलेट_नाम = 'task_manager/task_confirm_delete.html'
सफलता_यूआरएल = रिवर्स_आलसी('कार्य सूची')

अपने ऐप के यूआरएल कॉन्फ़िगर करें

अपनी ऐप निर्देशिका में, एक बनाएं urls.py अपने URL पैटर्न को इस प्रकार फ़ाइल करें और कॉन्फ़िगर करें:

से django.urls आयात पथ
से .विचार आयात टास्कलिस्टव्यू, टास्कडिटेलव्यू, टास्कक्रिएटव्यू, टास्कअपडेटव्यू, टास्कडिलीटव्यू

यूआरएलपैटर्न =
पथ('', TaskListView.as_view(), name='कार्य सूची'),
पथ('बनाएं/', TaskCreateView.as_view(), name='कार्य_सृजन'),
पथ('कार्य//', TaskDetailView.as_view(), name='कार्य_विस्तार'),
पथ('कार्य//update/', TaskUpdateView.as_view(), नाम='कार्य_अद्यतन'),
पथ('कार्य//delete/', TaskDeleteView.as_view(), name='कार्य_हटाएं'),
]

उपरोक्त यूआरएल पैटर्न फ़ंक्शन-आधारित दृश्यों के साथ बनाए गए यूआरएल के समान हैं। अंतर यह है as_view() प्रत्येक दृश्य नाम के अंत में फ़ंक्शन जोड़ा गया।

तुम कर सकते हो URL बनाने के लिए Django स्लग का उपयोग करें ऊपर प्रयुक्त प्राथमिक कुंजी के बजाय।

अपने विचारों के लिए टेम्पलेट बनाएं

अपने उपयोगकर्ताओं को उपरोक्त विचारों में परिभाषित कार्यों को करने की अनुमति देने से पता चलता है कि आप उनके साथ बातचीत करने के लिए एक इंटरफ़ेस प्रदान करते हैं। पहले बनाए गए विचारों से, कार्य प्रबंधक ऐप में चार उपयोगकर्ता इंटरफ़ेस होने चाहिए।

अपनी ऐप निर्देशिका में, चार HTML टेम्पलेट बनाएं। आपको भी बनाना चाहिए आधार.एचटीएमएल फ़ाइल। तुम कर सकते हो बूटस्ट्रैप के साथ अपने Django टेम्पलेट्स को स्टाइल करें समय बचाने के लिए.

कार्य सूची टेम्पलेट

इस टेम्पलेट में वह कोड शामिल होना चाहिए जो मॉडल के सभी कार्यों को सूचीबद्ध करता हो। कोड का एक कंकाल उदाहरण यह है:

{% 'base.html' का विस्तार करता है %}

{% ब्लॉक सामग्री %}
<केंद्र>
<एच 1>आपके कार्यएच 1>
<href="{% यूआरएल 'टास्क_क्रिएट' %}">कार्य जोड़ें>
{कार्यों में कार्य के लिए%%}
<डिव>
<डिव>
<h5>{{ कार्य.शीर्षक }}h5>
<पी>{{कार्य.वर्णन|ट्रंकटेचर्स: 50 }}पी>
<पी>
<मज़बूत>पुरा होना:मज़बूत>
{% यदि कार्य पूरा हो गया %}हां{% अन्य %}नहीं{% समाप्त %}
पी>
<href="{% यूआरएल 'टास्क_डिटेल' टास्क.पीके %}">
और पढ़ें
>
<href="{% यूआरएल 'टास्क_डिलीट' टास्क.पीके %}">
कार्य हटाएँ
>
डिव>
डिव>
{% खाली %}
<h3>अभी तक कोई कार्य नहीं.h3>
<href="{% यूआरएल 'टास्क_क्रिएट' %}">कार्य जोड़ें>
{% एंडफॉर %}
केंद्र>
{% एंडब्लॉक %}

कुछ बूटस्ट्रैप कक्षाओं के साथ, आप अपने पेज को इस तरह बना सकते हैं:

कार्य विवरण टेम्पलेट

इस पृष्ठ पर बनाए गए प्रत्येक कार्य का पूरा विवरण दिखना चाहिए। यहां एक उदाहरण टेम्पलेट है जिसका आप उपयोग कर सकते हैं:

{% 'base.html' का विस्तार करता है %}

{% ब्लॉक सामग्री %}
<एच 1>{{ कार्य.शीर्षक }}एच 1>
<पी>{{ कार्य विवरण }}पी>
<पी>पूर्ण: {% यदि कार्य पूरा हुआ %}हां{% अन्य %}नहीं{% समाप्त %}पी>
<href="{% यूआरएल 'टास्क_अपडेट' टास्क.पीके %}">कार्य संपादित करें>
<href="{% यूआरएल 'टास्क_डिलीट' टास्क.पीके %}">कार्य हटाएँ>
{% एंडब्लॉक %}

आपके स्टाइलिंग दृष्टिकोण के आधार पर, आपका पृष्ठ इस तरह दिखना चाहिए:

कार्य प्रपत्र टेम्पलेट

इस टेम्पलेट में एक ऐसा फॉर्म होना चाहिए जो उपयोगकर्ता को कोई कार्य बनाने या अपडेट करने की सुविधा दे।

{% 'base.html' का विस्तार करता है %}

{% ब्लॉक सामग्री %}
<एच 1>कार्य बनाएँएच 1>
<प्रपत्रतरीका="डाक">
{% सीएसआरएफ_टोकन %}
{{ form.as_p }}
<बटनप्रकार="जमा करना">बचानाबटन>
प्रपत्र>
{% एंडब्लॉक %}

टेम्प्लेट इस तरह दिखेगा:

कार्य टेम्पलेट हटाएँ

कार्यों के आकस्मिक विलोपन को रोकने के लिए यह टेम्पलेट एक पुष्टिकरण पृष्ठ होना चाहिए।

{% 'base.html' का विस्तार करता है %}

{% ब्लॉक सामग्री %}
<एच 1>हटाने की पुष्टि करेंएच 1>
<पी>क्या आप वाकई "{{ object.title }}" को हटाना चाहते हैं?पी>
<प्रपत्रतरीका="डाक">
{% सीएसआरएफ_टोकन %}
<बटनप्रकार="जमा करना">मिटानाबटन>
<href="{% यूआरएल 'टास्क_लिस्ट' %}">रद्द करना>
प्रपत्र>
{% एंडब्लॉक %}

कुछ बूटस्ट्रैप के साथ, आपका पेज इस तरह दिखना चाहिए:

अपनी उत्पादकता बढ़ाने के लिए कक्षा-आधारित दृश्यों का उपयोग करें

कक्षा-आधारित दृश्य कम समय में स्वच्छ, व्यवस्थित कोड लिखने का एक शानदार तरीका है, जिससे आपकी उत्पादकता बढ़ती है। आपको जितना संभव हो सके उन्हें अपनी परियोजनाओं में उपयोग करना चाहिए। इसके अलावा, आप अपने कार्य प्रबंधक ऐप को पूर्ण रूप से कार्यात्मक एप्लिकेशन बनाने के लिए खोज कार्यक्षमता, अधिसूचनाएं इत्यादि जैसी सुविधाओं को और एकीकृत कर सकते हैं।