Django 2.1 - Built-in class-based views API

बिल्ट-इन क्लास-आधारित विचार एपीआई




django

बिल्ट-इन क्लास-आधारित विचार एपीआई

क्लास-आधारित विचार API संदर्भ। परिचयात्मक सामग्री के लिए, क्लास-आधारित विचार विषय मार्गदर्शिका देखें।

विशिष्टता

क्लास-आधारित दृश्य द्वारा परोसा गया प्रत्येक अनुरोध में एक स्वतंत्र राज्य होता है; इसलिए, राज्य चर को उदाहरण पर संग्रहीत करना सुरक्षित है (यानी, self.foo = 3 एक थ्रेड-सुरक्षित संचालन है)।

क्लास-आधारित दृश्य as_view() क्लासमेथोड का उपयोग करके एक URL पैटर्न में तैनात किया गया है:

urlpatterns = [
    path('view/', MyView.as_view(size=42)),
]

दृश्य तर्कों के साथ थ्रेड सुरक्षा

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

अनुरोध में सेवा के लिए उपयोग किए जाने वाले as_view() में as_view() गए तर्क को असाइन किया जाएगा। पिछले उदाहरण का उपयोग करते हुए, इसका मतलब है कि MyView पर प्रत्येक अनुरोध MyView का उपयोग करने में सक्षम है। तर्क को उन विशेषताओं के अनुरूप होना चाहिए जो पहले से ही कक्षा में मौजूद हैं ( hasattr चेक पर True लौटें)।

बेस बनाम जेनेरिक विचार

बेस क्लास-आधारित विचारों को माता-पिता के विचारों के रूप में सोचा जा सकता है, जिसका उपयोग स्वयं किया जा सकता है या जिन्हें विरासत में मिला है। वे परियोजनाओं के लिए आवश्यक सभी क्षमताओं को प्रदान नहीं कर सकते हैं, इस मामले में मिक्सिंस हैं जो आधार दृश्य का विस्तार कर सकते हैं।

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

अधिकांश सामान्य विचारों के लिए QuerySet कुंजी की आवश्यकता होती है, जो कि QuerySet उदाहरण है; QuerySet ऑब्जेक्ट के बारे में अधिक जानकारी के लिए प्रश्न बनाना देखें।