2012-05-23 18 views
6

मेरे पास आने वाले अनुरोध के लिए कुछ गणना/जांच करने के लिए एक मिडलवेयर है। कुछ दृश्यों को इस गणना के परिणाम की आवश्यकता है।Django मिडलवेयर और HttpRequest

जैसा कि मैं दो बार एक ही कोड को कॉल नहीं करना चाहता, मैं परिणाम को मिडलवेयर में HttpRequest में रखना चाहता हूं, इसलिए देखें इसे पढ़ने में सक्षम हो जाएगा।

क्या आप सही संकेत के साथ मेरी मदद कर सकते हैं, मैं HttpRequest को ऑब्जेक्ट कैसे जोड़ सकता हूं?

धन्यवाद

उत्तर

6

HttpRequest एक सामान्य वर्ग है, तो आप सीधे वस्तु इसके उदाहरण के लिए, आवंटित कर सकते हैं request, मिडलवेयर में। उदाहरण के लिए:

class MyMiddleware(object): 
    def process_request(self, request): 
     request.foo = 'bar' 
+0

हाँ, यह सही है! धन्यवाद –

0

आप तथाकथित "monkey-patch" विधि का उपयोग कर HttpResponse विस्तार कर सकते हैं। उदाहरण के लिए आप आसानी से जोड़ सकते हैं या अपने जड़ __init__.py या wsgi.py के भीतर से समारोह निम्नलिखित या यहाँ तक कि settings.py फोन करके HttpResponse में तरीकों और गुण बदल सकते हैं:

def apply_http_request_patch(): 

    def get_property_value(request): 
     # return lazily evaluated value 

    from django.http import HttpRequest 
    HttpRequest.some_property = property(get_property_value) 
संबंधित मुद्दे