2012-05-23 19 views
6

Bazı hesaplamaları yapmak/her gelen isteği denetlemek için bir ara katmanım var. Bazı görüşlerin bu hesaplama sonuçlarına ihtiyacı vardır.Django ara katman yazılımı ve HttpRequest değişikliği

Aynı kodu iki kez aramak istemediğim için, sonuçları ara katman yazılımında HttpRequest uygulamasına eklemek istiyorum, böylece görüntüleme bunu okuyabilecektir.

Bana doğru ipucu verebilir misiniz, HttpRequest'e nasıl bir nesne ekleyebilirim?

sayesinde

cevap

6

HttpRequest normal sınıftır, doğrudan katman içinde, kendi örneğine request nesnesi atayabilirsiniz. Örneğin:

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

evet, bu doğru! Teşekkürler –

0

Sen sözde "monkey-patch" yöntemini kullanarak HttpResponse uzatabilirsiniz. Örneğin kolayca ekleyebilir veya çağıran hatta settings.py senin kökün __init__.py veya wsgi.py içinden fonksiyonunu takip ya tarafından HttpResponse içine yöntemleri ve özellikleri değiştirin:

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)