在模型上记录用户操作的方法

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项目

  1. 将“对象日志”添加到已安装的应用程序中
  2. 运行./manage.py syncdb
  3. 如果要添加用于显示日志的视图,请将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

作者

对象日志在俄勒冈州立大学开源实验室实现 (奥斯陆)。主要作者是彼得·克伦斯基。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用DBFlow进行迁移?   java无法从socket读取数据   java在JButton上使用鼠标运动监听器?   元素的java ArrayList链接和get IndexOutOfBoundsException   javascript如何在Java脚本中从ajax调用解析JSON对象   从数据库中获取信息并将其写入JTable。错误:java。lang.IndexOutOfBoundsException:索引:2,大小:2   spring如何使用Java SpringBoot在FCM推送通知中向IOS发送图像通知   java jsoup:解析某个标记的数据,该标记恰好位于某个特定标记之后   java没有HashMap的等式依赖于EntrySet。钥匙套?   未按预期评估java Maven属性(osmavenplugin)   类Java向ArrayList添加了用户输入,需要用另一个ArrayList中的变量分隔   JavaJSF丰富:每行呈现的数据列表?   集合Java 8按属性区分   在Java中,是否可以(静态)导入构造函数或局部变量?   安卓在ubuntu 10上安装java时出错64位   java是否应该hashCode()只使用equals()中使用的不可变字段的子集?   java如何创建ConcurrentMultiMap