Skip to main content

对 Django 模型实例的更改进行通用且安全的日志记录

项目描述

# django-model-logging

记录对 Django 模型实例所做的更改。

## 安装

`pip install django-model-logging`

将 `model_logging` 添加到 `INSTALLED_APPS` 中。

##用法

####低级使用

```python
from model_logging.models import LogEntry

LogEntry.objects.log(
log_entry_creator,
operation,
model,
user,
json_data,
)
```

参数如下:

* `log_entry_creator `:进行此更改的用户。
* `operation`:`LogEntry.OPERATION_ADDED`、`LogEntry.OPERATION_REMOVED`
或 `LogEntry.OPERATION_MODIFIED` 之一。
* `model`:被记录模型的路径(例如,'users.models.User')。
* `user`:模型实例所属的用户。
* `json_data`:模型实例上数据的完整或部分 JSON 表示。

#### 中级使用

将方法添加到可用于直接记录更改的视图(集):

```python
from model_logging.views import LoggingMethodMixin

class AViewOrViewset(LoggingMethodMixin, ModelViewSet):
def _get_logging_user(self):
# 重写此方法以为上面的 `user` 参数返回一个合适的
# 值。
return self.instance.user # 或类似

的 def extra_data(self):
# 覆盖这不是强制性的,它只是一个钩子
return {'any additional data': 'you want to log'}
```

该类现在可以访问以下内容:

```python
def log(self, operation, data):
# LogEntry.objects.log 的简化版本,
# 预先填充了一些参数。extra_data()的返回
值将被添加到
提供的数据中。

def _log_on_create(self, serializer):
# 使用
上面的 log() 方法记录 LogEntry.OPERATION_ADDED 更改。

def _log_on_update(self, serializer):
# 使用
上面的 log() 方法记录 LogEntry.OPERATION_MODIFIED 更改。

def _log_on_destroy(self, instance):
# 使用
上面的 log() 方法记录 LogEntry.OPERATION_DELETED 更改。
```

仍然更抽象:

#### 高级使用

视图集可以记录自己的更改!

```python
from model_logging.views import LoggingViewSetMixin

class AVeryShinyViewSet(LoggingViewSetMixin, ModelViewSet):
def _get_logging_user(self):
# 重写这个方法,为上面的 `user` 参数返回一个合适的
# 值。
return self.instance.user # 或类似

的 def extra_data(self):
# 覆盖这不是强制性的,它只是一个钩子
return {'any additional data': 'you want to log'}
```

这个 mixin 是 `LoggingMethodMixin` 的包装器,它
在 `perform_create`、`perform_update` 和 `perform_destroy` 期间调用适当的日志记录方法。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-model-logging-1.0.0.tar.gz (8.5 kB 查看哈希)

已上传 source

内置分布

django_model_logging-1.0.0-py3-none-any.whl (14.7 kB 查看哈希)

已上传 3 5