2012-05-23 2 views
6

У меня есть промежуточное программное обеспечение для выполнения некоторых расчетов/проверки для каждого входящего запроса. Некоторым взглядам нужен этот результат вычисления.Изменение промежуточного программного обеспечения Django и изменение HttpRequest

Поскольку я не хочу вызывать один и тот же код дважды, я хотел бы поместить результаты в HttpRequest в промежуточное программное обеспечение, так что просмотр сможет его прочитать.

Не могли бы вы помочь мне с правильной подсказкой, как добавить объект в HttpRequest?

благодаря

ответ

6

HttpRequest нормальный класс, можно непосредственно присвоить объект его, например, в request, в ППО. Например:

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

да, это правильно! благодаря –

0

Вы можете расширить HttpResponse с помощью так называемого «monkey-patch» метод. Например, вы можете легко добавить или заменить методы и свойства Into HttpResponse, вызвав следующие функции из вашего корня __init__.py или wsgi.py или даже settings.py:

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) 
Смежные вопросы