每次用户访问我的Django应用程序时,如何运行函数?

时间:2012-04-21 20:57:44

标签: django django-views

我有一个功能可以检查是否应该向在我的Django应用程序中支付较晚的用户收取延迟付款费用。由于我无法编写cron作业,因此每次用户访问我的应用程序时都必须运行此函数。

我可以在我的应用程序的每个视图的开头调用此函数,但这将重复函数名称。

每次用户访问我的Django应用程序时,如何运行函数?我是否应该在settings.py中调用该函数?

1 个答案:

答案 0 :(得分:2)

编写您自己的中间件并将其添加到设置中的中间件列表中。中间件本身只是一个具有一些函数的类,它们作为请求处理链中某些点的钩子:

class MyMiddleware (request):

    process_request(self,request):
       # do something here before passing the request to the view

    process_response(self,request,response):
       # do something here before passing the response to the client

还有一些其他的钩子可以指定你的功能所在的确切位置,你最好看看the docs,看看哪种情况最适合你的情况。

在设置中,只需将中间件添加到中间件类:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'your_app.middleware.MyMiddleware',

这应该完全符合你的要求。