2009-05-06 14 views
17

यदि मेरे विचारों में से आधे के लिए एक ही डेटा सेट की आवश्यकता होती है, तो डेटा को हमेशा उपलब्ध कराने के लिए एक संदर्भ प्रोसेसर का उपयोग करना उचित है, या क्या कोड को दोहराने से बचने के लिए कोड को दोहराने से बचने का एक बेहतर तरीका है डेटा अगर इसका उपयोग दृश्य में नहीं किया जाएगा?Django संदर्भ प्रोसेसर का उपयोग करना उचित कब है?

उत्तर

22

RequestContext प्रारंभकर्ता सेटिंग्स फ़ाइल में सूचीबद्ध किसी भी संदर्भ प्रोसेसर चलेगा, लेकिन यह चलाने के लिए अतिरिक्त प्रोसेसर की एक सूची भी लेता है। किसी सामान्य प्रयोजन संदर्भ प्रोसेसर को सेटिंग.py में रखा जा सकता है और अधिक विशिष्ट लोगों को RequestContext में मामले-दर-मामले आधार पर जोड़ा जा सकता है।

RequestContext छोड़कर किसी भी संदर्भ प्रोसेसर को चलाने के लिए पूरी तरह से छोड़ दें।

# want context processors listed in settings.py as well as some more specific ones 
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request, processors = extra_processors)) 

# want only context processors listed in settings.py 
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request)) 

# no context processors 
return render_to_response('template.html', {'foo':'bar'}) 
+0

यह मेरे लिए बेहतर जवाब जैसा लगता है – Rasiel

+0

हाँ मैंने इसे स्विच किया क्योंकि अतिरिक्त प्रोसेसर बिट वास्तव में बाद में था। – rennat

1

आप फ़िल्टर कर सकते हैं जो विचारों वास्तव में संदर्भ प्रोसेसर का उपयोग केवल केवल उन जो इसकी आवश्यकता RequestContext(request) गुजर, जैसे द्वारा:

# want context processors 
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request)) 

# no context processors 
return render_to_response('template.html', {'foo':'bar'}) 
+0

मुझे लगता है कि इस विशेष स्थिति के लिए काम करेंगे, लेकिन यहां बड़ा सोचने की कोशिश: क्या हुआ अगर मैं 3 या 4 संदर्भ प्रोसेसर कार्यों कि यादृच्छिक पर देखा गया की जरूरत थी था, उस बिंदु पर मैं सिर्फ उन्हें आयात करना चाहिए और उन्हें उन विचारों में बुलाओ जिन्हें उनकी आवश्यकता है? क्योंकि संदर्भ प्रोसेसर एक तरह से या कोई चीज सही नहीं हैं? – rennat

+3

ठीक है, settings.py में संदर्भ प्रोसेसर सभी अनुरोध हैं या RequestContext के साथ नहीं हैं। ऐसा करने का एक और अधिक लचीला तरीका आपके द्वारा इच्छित प्रोसेसर के प्रत्येक सेट के लिए RequestContext को उपclass करना होगा और वहां संदर्भ प्रोसेसर सेट करना होगा, ताकि आपके पास साइडबारकॉन्टेक्स्ट और टिप्पणियां कॉन्टेक्स्ट आदि हो सकें। यह सेटिंग प्रोसेसर को सेटिंग.py से भी प्राप्त करेगा, जो होगा उन्हें अधिक ऐप विशिष्ट बनाएं, जो बेहतर है यदि आपके पास संदर्भ प्रोसेसर का उपयोग करके कई ऐप्स हैं। तो फिर, आपको केवल उन्हें चेन करने के लिए एक अच्छा तरीका चाहिए ... – tghw

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