对 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 模型实例所做的更改。
## 安装
`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
查看哈希)
内置分布
关
django_model_logging -1.0.0-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 8da4ee4657ef9b479f0af4e0e13cf5cf0865a667b7ff4df41dff60e280ccf283 |
|
| MD5 | ca12b55aad85d620ece2ada02711983c |
|
| 布莱克2-256 | fad9b0b7c3d35c51933050ef0a75b3a1e9e96740aa1073f38721b8433447a195 |