2016-03-06 13 views
6

हम Django में ऐसा कर सकते हैं:Django दृश्य: get_context_data() बनाम प्राप्त()

class LoginView(generic.FormView): 

    def get_context_data(self, **kwargs): 
     common = CommonView(self, **kwargs) 
     context = super(LoginView, self).get_context_data(**kwargs) 
     context['common'] = common.infos 

या:

class LoginView(generic.FormView): 

    def get(self, request, *args, **kwargs): 
     common = CommonView(self, **kwargs) 
     return render(request, self.template_name, {'common': common.infos }) 

कौन सा बेहतर है और क्यों है? उनमें से

उत्तर

3

get_context_data() का उपयोग करना दिलचस्प है, क्योंकि यह केवल एक ही लक्ष्य है (एक काम करते हैं और यह अच्छी तरह से करना): टेम्पलेट को डेटा पास।

दूसरी ओर, get() में HttpResponse अंत में वापस करने के लिए कई कार्य करने हैं। get() को कार्य कॉल का कंकाल होना चाहिए, कार्यों को प्रतिनिधि बनाना चाहिए। उनमें से, आपके पास get_context_data() है, और अन्य वर्ग के अनुसार आप विरासत में हैं।

जब तक यह संभव हो, मुझे लगता है कि माता-पिता वर्ग (एस) get(), post(), ... विधियों को संभालने और उनके द्वारा प्रदान की जाने वाली सुविधा विधियों का उपयोग करने के लिए बेहतर है।

जहां तक ​​मेरा सवाल है, केवल उसी स्थिति है जिसके लिए मैं get() विधि अपने आप को है, जब सामान्य विचारों लेखन को संभालने के लिए किया था।

1

कोई नहीं "बेहतर" है। मैं कहूंगा कि यह परिदृश्य पर निर्भर करता है कि आपको क्या करना है। get_context_data() सभी अनुरोध तरीकों (post, get) के लिए कहा जाता है, इसलिए यदि आप कुछ डेटा उपलब्ध हर बार की आवश्यकता है, get_context_data() का उपयोग करें। यदि आपको केवल एक विशिष्ट अनुरोध विधि के लिए डेटा की आवश्यकता है (उदाहरण के लिए get में), तो इसे get में रखें।

संबंधित मुद्दे