前面讲到使用LogEntry记录用户的操作已经实现,但用户登录无法记录。
查阅资料后,了解到可以自定义Django中间件,在中间件中对登录动作进行记录。
在项目的app目录下,新建文件夹mymiddleware,再新建middleware.py文件,内容如下
from django.utils.deprecation import MiddlewareMixin
from tcm.models.model_logEntry import ccom_logEntry
class MyMiddle1(MiddlewareMixin):
def process_request(self,request):
pass
def process_response(self,request,response):
if not hasattr(request,"user"):
return response
if str(request.path) == "/accounts/login/":
user = request.user
if not hasattr(user,"realname"):
return response
if request.user.is_authenticated:
print(user.realname,'已登录' )
ccom_logEntry.log_common(request,user,"登录系统")
else:
print(user.realname,'登录失败' )
return response
在setting的MIDDLEWARE中增加自定义的中间件
'tcm.mymiddleware.middleware.MyMiddle1',