如何使用 Django 中间件来记录用户操作日志?

2023-04-11 00:00:00 操作 中间件 如何使用

要使用 Django 中间件来记录用户操作日志,需要完成以下步骤:

步骤一:创建中间件

在 Django 项目的某个应用中创建一个中间件,比如说创建一个名为 UserActionMiddleware 的中间件。在这个中间件中,你可以通过 process_view 方法来获取请求的视图函数并记录用户的操作日志。

# myapp/middleware.py

from django.utils.deprecation import MiddlewareMixin
from django.utils import timezone

class UserActionMiddleware(MiddlewareMixin):
    def process_view(self, request, view_func, *view_args, **view_kwargs):
        # 获取用户操作信息
        user = request.user
        action_time = timezone.now()
        action_ip = request.META.get('REMOTE_ADDR')
        action_url = request.get_full_path()
        action_method = request.method

        # 记录用户操作日志
        log_msg = f'{user} 在 {action_time} 通过 {action_ip} 访问了 {action_url}({action_method})'
        with open('user_action_log.txt', 'a+') as f:
            f.write(log_msg + '\n')

步骤二:将中间件添加到 MIDDLEWARE 列表中

在 Django 项目的设置文件(settings.py)中,将创建的中间件添加到 MIDDLEWARE 列表中。

# settings.py

MIDDLEWARE = [
    # ...
    'myapp.middleware.UserActionMiddleware',
    # ...
]

步骤三:完成测试

完成以上步骤后,使用浏览器访问 Django 应用,可以在应用的根目录下找到一个名为 user_action_log.txt 的文件,其中记录了用户操作的相关信息,如下所示:

admin 在 2022-07-20 14:30:00.000000+08:00 通过 127.0.0.1:8000/index 访问了 /index(GET)
pidancode.com 在 2022-07-20 14:35:00.000000+08:00 通过 127.0.0.1:8000/about 访问了 /about(GET)
皮蛋编程 在 2022-07-20 14:50:00.000000+08:00 通过 127.0.0.1:8000/login 访问了 /login(POST)

这就是使用 Django 中间件来记录用户操作日志的操作步骤。在中间件中,你可以根据需求自定义日志记录的格式和存储方式。

相关文章