मैं निम्नलिखित Django टेम्पलेट संदर्भ प्रोसेसर समस्या में चला गया है।यह Django टेम्पलेट संदर्भ प्रोसेसर सभी अनुरोधों के लिए क्यों लागू नहीं है?
संदर्भ प्रोसेसर myapp/context_processors.py
में परिभाषित किया गया है:
def my_context_processor(request):
return {
'foo': 123,
}
यह मानक Django संदर्भ प्रोसेसर के साथ settings.py में वायर्ड है:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'myproject.myapp.context_processors.my_context_processor',
)
समस्या मैं का सामना कर रहा है कि है my_context_processor सभी अनुरोधों के लिए लागू नहीं है।
यह निम्न कोड के लिए लागू नहीं किया जाता है:
def index(request):
return render_to_response("index.html", locals())
हालांकि, यह निम्न कोड के लिए लागू किया जाता है:
def index(request):
return render_to_response("index.html", locals(), context_instance=RequestContext(request))
मैं धारणा है कि संदर्भ प्रोसेसर हैं के तहत किया गया सभी अनुरोधों के लिए आवेदन किया गया, न कि केवल context_instance
प्रदान किया गया है।
मैं अपने अनुरोध प्रोसेसर को सभी अनुरोधों के लिए कैसे लागू कर सकता हूं?
क्या कोई DRY शॉर्टकट है जिसका उपयोग मैं context_instance बॉयलरप्लेट से बचने के लिए कर सकता हूं? मुझे लगता है कि एक आम बात यह है कि आप सभी अनुरोधों के लिए संदर्भ प्रोसेसर चर मौजूद होना चाहते हैं। कहें कि सभी विचारों में एक पाद लेख शामिल है जिसमें "linked_sites" सूची की आवश्यकता है। "linked_sites" को संदर्भ प्रोसेसर द्वारा प्रदान किया जाएगा, लेकिन मैं context_instance = RequestContext (अनुरोध) के साथ अपने कोड को छिड़कने से बचाना चाहता हूं :-) – knorv