我有一个功能,可以检查是否应该向在我的Django应用程序中延迟付款的用户收取滞纳金。由于我不能编写cron作业,所以每次用户访问我的应用程序时,我都必须运行此函数。
我可以在应用程序中的每个视图开始时调用此函数,但这将大量重复函数名。
我如何让一个函数在每次用户访问我的Django应用程序时运行?我是否应该在settings.py中调用该函数?
发布于 2012-04-22 05:10:12
编写您自己的中间件,并将其添加到您设置的中间件列表中。中间件本身只是一个带有一些函数的类,这些函数充当请求处理链中某些点的钩子:
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',)
这应该就是你想要的。
https://stackoverflow.com/questions/10262946
复制相似问题