Как в Django написать this для каждой функции?

Всякий раз, когда кто-то загружает страницу, я хочу напечатать «Привет» в консоли.

Я не хочу добавлять декоратор ко всем моим 100 просмотрам. Это глупо. Я как бы хочу, чтобы этот декоратор автоматически добавлялся в мои представления. Хм...


person TIMEX    schedule 26.01.2011    source источник


Ответы (1)


Промежуточное ПО: http://docs.djangoproject.com/en/dev/topics/http/middleware/#writing-your-own-middleware

Определите класс промежуточного программного обеспечения, переопределите одну из функций, определенных выше, напечатайте «Hello», верните соответствующий объект (согласно документам) и добавьте класс промежуточного программного обеспечения в свой файл settings.py.

class PrintHelloMiddleware(object):
    def process_response(self, request, response):
        print "Hello"
        return None

# settings.py
MIDDLEWARE_CLASSES = ( # ... usual middleware
                       'path.to.my.middleware.PrintHelloMiddleware',
                      )
person Yuji 'Tomita' Tomita    schedule 26.01.2011
comment
Как будет выглядеть код? Я помещаю все в init? Каковы функции этого класса? - person TIMEX; 26.01.2011
comment
документы, на которые я ссылался, показывают, какие функции вы можете переопределить и что вернуть - person Yuji 'Tomita' Tomita; 26.01.2011
comment
Как сделать это доступным только для функций в моем views.py (а не для мультимедиа и т. д.) - person TIMEX; 26.01.2011
comment
медиа не должны проходить этот этап, потому что вы не должны обслуживать медиа через представление django! - person Yuji 'Tomita' Tomita; 26.01.2011
comment
Но вы потенциально можете переопределить process_view, который выставляет вызываемый view_func. Вы можете сделать несколько отрывочных вызовов inspect, чтобы определить, является ли имя файла views.py, и распечатать только в этом случае. - person Yuji 'Tomita' Tomita; 26.01.2011