|
|
1 month ago | |
|---|---|---|
| .. | ||
| migrations | 1 month ago | |
| README.md | 1 month ago | |
| __init__.py | 1 month ago | |
| admin.py | 1 month ago | |
| apps.py | 1 month ago | |
| filter.py | 1 month ago | |
| models.py | 1 month ago | |
| serializers.py | 1 month ago | |
| tests.py | 1 month ago | |
| urls.py | 1 month ago | |
| views.py | 1 month ago | |
操作日志模块用于记录系统中的用户敏感操作,支持按操作级别进行分类,并提供前端界面查看操作历史。
操作级别分类:
view: 查看操作(蓝色)update: 更新操作(橙色)new: 新增操作(绿色)delete: 删除操作(红色)download: 下载操作(紫色)login: 登录操作(青色)logout: 登出操作(灰色)other: 其他操作(棕色)操作结果记录:
success: 成功failure: 失败详细信息记录:
from operation_log.views import log_operation, log_success_operation, log_failure_operation
def create(self, request, *args, **kwargs):
# ... 执行创建操作 ...
serializer.save()
# 记录操作日志
log_success_operation(
request=self.request,
operation_content=f"创建新记录 ID:{serializer.data['id']}",
operation_level="new",
operator=self.request.auth.name if self.request.auth else None,
object_id=serializer.data['id'],
module_name="模块名称"
)
return Response(serializer.data, status=200)
def update(self, request, pk):
# ... 执行更新操作 ...
serializer.save()
log_success_operation(
request=self.request,
operation_content=f"更新记录 ID:{pk}:{request.data}",
operation_level="update",
operator=self.request.auth.name if self.request.auth else None,
object_id=pk,
module_name="模块名称"
)
return Response(serializer.data, status=200)
def destroy(self, request, pk):
# ... 执行删除操作 ...
log_success_operation(
request=self.request,
operation_content=f"删除记录 ID:{pk}",
operation_level="delete",
operator=self.request.auth.name if self.request.auth else None,
object_id=pk,
module_name="模块名称"
)
return Response(status=204)
def create(self, request, *args, **kwargs):
try:
# ... 执行操作 ...
serializer.save()
log_success_operation(
request=self.request,
operation_content="创建记录成功",
operation_level="new",
module_name="模块名称"
)
return Response(serializer.data, status=200)
except Exception as e:
# 记录失败操作
log_failure_operation(
request=self.request,
operation_content=f"创建记录失败: {str(e)}",
operation_level="new",
module_name="模块名称"
)
raise APIException({"detail": str(e)})
def retrieve(self, request, pk):
obj = self.get_object()
log_operation(
request=self.request,
operation_content=f"查看记录 ID:{pk}",
operation_level="view",
operator=self.request.auth.name if self.request.auth else None,
object_id=pk,
module_name="模块名称"
)
serializer = self.get_serializer(obj)
return Response(serializer.data)
def download_file(self, request, pk):
# ... 执行下载操作 ...
log_success_operation(
request=self.request,
operation_content=f"下载文件 ID:{pk}",
operation_level="download",
operator=self.request.auth.name if self.request.auth else None,
object_id=pk,
module_name="模块名称"
)
return response
GET /operation_log/
查询参数:
page: 页码(默认:1)page_size: 每页数量(默认:11)operation_level: 操作级别(可选值:view, update, new, delete, download, login, logout, other)operation_result: 操作结果(可选值:success, failure)module_name: 模块名称operator: 操作者(支持模糊搜索)operation_content__icontains: 操作内容(模糊搜索)operation_time__range: 操作时间范围(格式:YYYY-MM-DD,YYYY-MM-DD)示例:
GET /operation_log/?operation_level=delete&operation_result=success&page=1
GET /operation_log/{id}/
前端操作日志页面路径:/operationlog
功能:
module_name 以便后续筛选和统计