在模型上记录用户操作的方法
django-object-log的Python项目详细描述
此应用程序提供在模型实例上记录用户操作的功能。行动 类型可以由应用程序开发人员定义,并且可以引用多个对象。 每个操作类型都定义了自己的模板,用于呈现 信息。它允许特定于发生的操作的详细消息。
对象日志包括添加条目和生成视图的快捷方式 展示它们。
安装
有几种方法可以安装对象日志。
对象日志提供一个标准distutils setup.py。经典的咒语 从setup.py安装可能是:
$ python setup.py install
可能需要添加sudo才能安装到系统python中。
$ sudo python setup.py install
我们在pypi上也有对象日志,因此可以使用pip安装它。 (easy_install也可以工作,但我们不推荐easy_install。使用pip。)
$ pip install django-object-log
如果要将对象日志直接安装到django应用程序中,并希望 要将对象日志与应用程序一起分发,只需复制 对象日志文件夹到Django项目中。
配置Django项目
- 将“对象日志”添加到已安装的应用程序中
- 运行./manage.py syncdb
- 如果要添加用于显示日志的视图,请将object_log.url添加到url中
使用对象日志
首先,注册一些操作类型。这可以在任何时候完成,但是应该 最好在models.py中完成一次。日志操作需要密钥和 用于呈现该操作类型的模板。
>>> from object_log.models import LogAction >>> LogAction.objects.register('MY_ACTION', 'path/to/my/template.html')
现在,无论何时发生该操作,都可以使用logaction类型
>>> from object_log.models import LogItem >>> log = LogItem.objects.log_action >>> log('MY_ACTION', user, some_object) >>> log('EDIT', user, some_object) >>> log('DELETE', user, some_object)
也可以通过包含 dict它在logaction模板中可用作{{data}。这是 用于缓存信息以减少渲染时的相关查询 日志
>>> log('MY_ACTION', user, {'my_obj':str(obj1})
可以使用缓存从对象自动填充数据dict 在logAction中注册的函数。cache函数接收用户, 对象,以及传递给log_action()的任何数据。它应该会返回一个dict.this 数据覆盖手动数据,如果要同时使用,则必须手动合并。
>>> def cache(user, obj1, obj2, obj3, data): >>> return dict(obj_str=str(obj1)) >>> >>> LogAction.objects.register('MY_ACTION', 'path/to/my/template.html', cache)
日志操作可以正常使用。
>>> log('MY_ACTION', user, some_object)
有关详细信息,请参见wiki: http://code.osuosl.org/projects/django-object-log/wiki