Django 2.1 - Single object mixins

एकल वस्तु मिश्रण




django

एकल वस्तु मिश्रण

SingleObjectMixin

class django.views.generic.detail.SingleObjectMixin

वर्तमान HTTP अनुरोध से जुड़ी किसी वस्तु को देखने के लिए एक तंत्र प्रदान करता है।

तरीके और गुण

model

वह मॉडल जो इस दृश्य को प्रदर्शित करेगा, उसके लिए डेटा प्रदर्शित करेगा। निर्दिष्ट करने वाला model = Foo प्रभावी रूप से queryset = Foo.objects.all() को निर्दिष्ट करने के समान है, जहां objects Foo के डिफ़ॉल्ट प्रबंधक के लिए खड़े होते हैं।

queryset

एक QuerySet जो वस्तुओं का प्रतिनिधित्व करता है। यदि प्रदान किया जाता है, तो queryset का मान model लिए प्रदान किया गया मान queryset देता model

चेतावनी

queryset एक उत्परिवर्तनीय मूल्य के साथ एक वर्गीय विशेषता है इसलिए इसे सीधे उपयोग करते समय सावधानी बरतनी चाहिए। इसका उपयोग करने से पहले, या तो इसकी all() विधि को कॉल करें या इसे get_queryset() साथ पुनर्प्राप्त करें जो पर्दे के पीछे क्लोनिंग का ख्याल रखता है।

slug_field

मॉडल पर फ़ील्ड का नाम जिसमें स्लग होता है। डिफ़ॉल्ट रूप से, slug_field 'slug'

slug_url_kwarg

URLConf कीवर्ड तर्क का नाम जिसमें स्लग शामिल है। डिफ़ॉल्ट रूप से, slug_url_kwarg 'slug'

pk_url_kwarg

URLConf कीवर्ड तर्क का नाम जिसमें प्राथमिक कुंजी है। डिफ़ॉल्ट रूप से, pk_url_kwarg 'pk'

context_object_name

संदर्भ में उपयोग करने के लिए चर का नाम निर्दिष्ट करता है।

query_pk_and_slug

यदि यह True , तो get_object() प्राथमिक कुंजी और स्लग दोनों का उपयोग करके अपने लुकअप को प्रदर्शित करता है। False करने के लिए चूक।

यह विशेषता असुरक्षित प्रत्यक्ष वस्तु संदर्भ हमलों को कम करने में मदद कर सकती है। जब अनुप्रयोग एक अनुक्रमिक प्राथमिक कुंजी द्वारा व्यक्तिगत वस्तुओं तक पहुंच की अनुमति देते हैं, तो एक हमलावर सभी URL का अनुमान लगा सकता है; जिससे आवेदन में सभी वस्तुओं की एक सूची प्राप्त होती है। यदि अलग-अलग ऑब्जेक्ट्स तक पहुंच वाले उपयोगकर्ताओं को इस सूची को प्राप्त करने से रोका जाना चाहिए, तो query_pk_and_slug को True सेट करने से URL के अनुमान को रोकने में मदद मिलेगी क्योंकि प्रत्येक URL को दो सही, गैर-अनुक्रमिक तर्क की आवश्यकता होगी। बस एक अद्वितीय स्लग का उपयोग करना एक ही उद्देश्य की सेवा कर सकता है, लेकिन यह योजना आपको गैर-अद्वितीय स्लग रखने की अनुमति देती है।

get_object(queryset=None)

वह एकल ऑब्जेक्ट लौटाता है जिसे यह दृश्य प्रदर्शित करेगा। अगर queryset प्रदान की जाती है, तो उस क्वेरी को ऑब्जेक्ट के स्रोत के रूप में उपयोग किया जाएगा; अन्यथा, get_queryset() का उपयोग किया जाएगा। get_object() देखने के लिए तर्कों में एक pk_url_kwarg तर्क की तलाश करता है; यदि यह तर्क पाया जाता है, तो यह विधि उस मान का उपयोग करके प्राथमिक-कुंजी आधारित लुकअप करती है। यदि यह तर्क नहीं मिलता है, तो यह एक slug_url_kwarg तर्क की slug_url_kwarg करता है, और slug_field का उपयोग करके एक स्लग लुकअप करता है।

जब query_pk_and_slug True , get_object() प्राथमिक कुंजी और स्लग दोनों का उपयोग करके अपना लुकअप करेगा।

get_queryset()

वह क्वेरी लौटाता है जिसका उपयोग उस ऑब्जेक्ट को प्राप्त करने के लिए किया जाएगा जिसे यह दृश्य प्रदर्शित करेगा। डिफ़ॉल्ट रूप से, QuerySet all() QuerySet विशेषता का मान देता है यदि यह सेट है, अन्यथा यह model विशेषता के डिफ़ॉल्ट प्रबंधक पर all() विधि को कॉल करके QuerySet सेट का निर्माण करता है।

get_context_object_name(obj)

संदर्भ चर नाम लौटाएं जिसका उपयोग उस डेटा को करने के लिए किया जाएगा जिसे यह दृश्य हेरफेर कर रहा है। यदि model_name सेट नहीं है, तो मॉडल के model_name name से संदर्भ नाम का निर्माण किया जाएगा जो model_name से बना है। उदाहरण के लिए, मॉडल Article 'article' नाम 'article' संदर्भ वस्तु होगी।

get_context_data(**kwargs)

ऑब्जेक्ट को प्रदर्शित करने के लिए संदर्भ डेटा लौटाता है।

इस पद्धति के आधार कार्यान्वयन के लिए आवश्यक है कि self.object विशेषता को दृश्य द्वारा सेट किया जाए (भले ही None भी None )। ऐसा करने के लिए सुनिश्चित करें यदि आप इस मिश्रण का उपयोग कर रहे हैं, तो एक अंतर्निहित विचार के बिना ऐसा करता है।

यह इन सामग्रियों के साथ एक शब्दकोश देता है:

  • object : वह ऑब्जेक्ट जिसे यह दृश्य प्रदर्शित कर रहा है ( self.object )।
  • self.object : self.object को get_context_object_name() द्वारा लौटाए गए नाम के तहत भी संग्रहीत किया जाएगा, जो मॉडल नाम के get_context_object_name() संस्करण में चूक करता है।

प्रसंग चर प्रसंग टेम्पलेट संदर्भ प्रोसेसर से मानों को ओवरराइड करता है

get_context_data() किसी भी चर संदर्भ प्रोसेसर से संदर्भ चर पर पूर्वता लेते हैं। उदाहरण के लिए, यदि आपका दृश्य User लिए model विशेषता सेट करता है, तो User का डिफ़ॉल्ट संदर्भ ऑब्जेक्ट नाम django.contrib.auth.context_processors.auth() संदर्भ प्रोसेसर से user चर को ओवरराइड करेगा। get_context_object_name() से बचने के लिए get_context_object_name() का उपयोग करें।

get_slug_field()

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

SingleObjectTemplateResponseMixin

class django.views.generic.detail.SingleObjectTemplateResponseMixin

एक मिश्रित वर्ग जो किसी एकल ऑब्जेक्ट उदाहरण पर संचालित होने वाले विचारों के लिए टेम्पलेट-आधारित प्रतिक्रिया प्रतिपादन करता है। यह देखने की आवश्यकता है कि जिस दृश्य के साथ इसे मिलाया गया है वह self.object प्रदान करता है, वह वस्तु उदाहरण जिस पर दृश्य चल रहा है। self.object आमतौर पर होगा, लेकिन होने की आवश्यकता नहीं है, एक Django मॉडल का एक उदाहरण। यह None हो सकता है यदि दृश्य एक नए उदाहरण के निर्माण की प्रक्रिया में है।

का विस्तार

तरीके और गुण

template_name_field

वर्तमान वस्तु उदाहरण पर फ़ील्ड जिसका उपयोग उम्मीदवार टेम्पलेट के नाम को निर्धारित करने के लिए किया जा सकता है। यदि वर्तमान ऑब्जेक्ट उदाहरण पर या तो template_name_field स्वयं या template_name_field का मान None , तो ऑब्जेक्ट का उपयोग उम्मीदवार टेम्पलेट नाम के लिए नहीं किया जाएगा।

template_name_suffix

ऑटो-जेनरेट किए गए कैंडिडेट के नाम को जोड़ने के लिए प्रत्यय। डिफ़ॉल्ट प्रत्यय _detail

get_template_names()

उम्मीदवार टेम्पलेट नामों की सूची लौटाता है। निम्न सूची लौटाता है:

  • देखने पर (यदि प्रदान की गई है) template_name का मूल्य
  • template_name_field की सामग्री वस्तु उदाहरण पर फ़ील्ड जो दृश्य पर चल रही है (यदि उपलब्ध हो)
  • <app_label>/<model_name><template_name_suffix>.html