python - Converting from function- to class-based view -
फ़ंक्शन-आधारित दृश्य है, जो इस तरह दिखता है:
def class_based_foo अनुरोध, आईडी): डोमेन = get_object_or_404 (डोमेन, आईडी = आईडी) .. # डोमेन के लिए 20 लिंक्स कोड आता है। अगर request.method == 'POST': # स्ब्स के लिए डोमेन की आवश्यकता है: # smth else इसके लिए डोमेन की भी आवश्यकता है लेकिन POST रिटर्न रेंडर से संबंधित नहीं है (अनुरोध, 'foo.html', {'domain': domain}) सवाल यह है: आधारित दृश्य?
- बेस के रूप में उपयोग करने के लिए जेनेरिक जेगो व्यू क्या है?
- इसे भागों में कैसे तोड़ सकता है, इसलिए किसी को 20 लाइनों को कॉपी-पेस्ट करने की आवश्यकता नहीं है डोमेन संबंधित कोड?
यह विचार था:
वर्ग FooView (TemplateView): template_name = 'foo.html' def render_to_response (स्वयं, संदर्भ , ** kwargs): वापसी प्रस्तुत (स्वयं। अनुरोध, स्वयं .get_template_names () [0], संदर्भ) def get_context_data (स्वयं, डोमेन_आईडी, ** kwargs): संदर्भ = सुपर (संपादित करें DomainView, self) .get_context_data (** kwargs) .. # डोमेन से संबंधित सामानों के बहुत सारे # # smth else को भी डोमेन की आवश्यकता होती है, लेकिन यह पद रिटर्न संदर्भ def पोस्ट (स्वयं, अनुरोध, * आर्ग्स, * से संबंधित नहीं है * Kwargs): # do smth जो डोमेन की आवश्यकता है # लेकिन डोमेन कहाँ से प्राप्त करें? कोड की 20 लाइनों को कॉपी-चिपकाएं?
इस फ़ंक्शन को क्लास-आधारित दृश्य में परिवर्तित नहीं करें। आपका कार्य साफ और समझ में आता है। क्लास-आधारित दृश्य बदसूरत कोड का गड़बड़ा होगा।
यदि आपको वास्तव में सीबीवी का उपयोग करना है तो वह उस से प्राप्त होगा। आप डोमेन मान को स्वयं के विशेषताओं के रूप में सहेज सकते हैं और फिर उन्हें विभिन्न तरीकों में एक्सेस कर सकते हैं:
self.some_data = "कुछ डेटा"प्री>यह ऑपरेशन है।
Comments
Post a Comment