我有一个功能可以检查是否应向在我的 Django 应用程序中延迟付款的用户收取滞纳金。由于我无法编写 cron 作业,因此每次用户访问我的应用程序时我都必须运行此函数。
我可以在我的应用程序的每个视图的开头调用这个函数,但这会重复很多函数名。
每次用户访问我的 Django 应用程序时,我如何运行一个函数?我是否应该在 settings.py 中调用该函数?
我有一个功能可以检查是否应向在我的 Django 应用程序中延迟付款的用户收取滞纳金。由于我无法编写 cron 作业,因此每次用户访问我的应用程序时我都必须运行此函数。
我可以在我的应用程序的每个视图的开头调用这个函数,但这会重复很多函数名。
每次用户访问我的 Django 应用程序时,我如何运行一个函数?我是否应该在 settings.py 中调用该函数?
编写自己的中间件并将其添加到设置中的中间件列表中。中间件本身只是一个具有一些函数的类,这些函数充当请求处理链中某些点的钩子:
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
还有一些其他钩子可用于指定您的功能启动的确切点,您最好查看文档以了解最适合您的情况。
在设置中,只需将中间件添加到中间件类中:
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',
)
那应该完全符合您的要求。