【发布时间】:2011-06-16 01:43:14
【问题描述】:
每当有人加载页面时,我想在控制台中打印“Hello”。
我不想为我的所有 100 个视图添加装饰器。这很愚蠢。 我有点希望这个装饰器自动添加到我的视图中。 嗯……
【问题讨论】:
标签: python django oop decorator
每当有人加载页面时,我想在控制台中打印“Hello”。
我不想为我的所有 100 个视图添加装饰器。这很愚蠢。 我有点希望这个装饰器自动添加到我的视图中。 嗯……
【问题讨论】:
标签: python django oop decorator
中间件: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',
)
【讨论】:
process_view,这会暴露出正在调用的view_func。您可以进行一些粗略的inspect 调用以确定文件名是否为views.py,如果是则仅打印。