跳转到主要内容

将Django数据库查询插入到时间轴中

项目描述

timeline_django 将动作插入到 Django 数据库查询的时间轴(http://pypi.python.org/pypi/timeline/)中,以及 Django 中的其他事件。这对于获得对单个 Django 请求中涉及的工作和调用的整体视图非常有用。

通常与 python-oops 一起使用 - 此 README 假设您已经为 Django 应用程序配置了基于 WSGI 的 OOPS 报告。

WSGI

假设在 wsgi 下运行(因为 mod_python 已弃用,1.4 及以上版本的开发和测试服务器是基于 wsgi 的。在某些非 WSGI 环境中运行可能需要一些组装。)

配置 timeline-django 需要三个必要的步骤。

WSGI 中间件

将此放在您的 WSGI 应用程序中,在 Django 应用程序定义之后但在 oops_wsgi 包装器应用之前

from timeline_django.wsgi import make_app as timeline_django_make_app
from timeline.wsgi import make_app as timeline_make_app
application = timeline_django_make_app(application)
application = timeline_make_app(application)

第一个包装器暴露了 WSGI 环境给没有请求上下文的 Django 代码 - 例如,Django 钩子,这是我们捕获 ORM 事件的地方。

第二个包装器将时间轴对象注入到 WSGI 环境中。

钩入 Django 事件

将此放在任何仅运行一次的地方(例如,在您的 WSGI 应用程序定义中)

from timeline_django import setup
setup.setup_for_requests()

编辑

最后,您需要确保查询的内容被编辑,这些查询可能泄露安全或个人信息:这可以防止会话劫持和权限提升攻击,使非管理员人员如开发者查看时间线数据更安全。

import oops_timeline
import timeline_django.filters
oops_timeline.install_hooks(oops_config)
timeline_django.filters.install_hooks(oops_config)

oops_timeline 钩子将时间线从 WSGI 环境复制到 OOPS 报告,第二个钩子安装了针对复制的时间线操作的自定义 Django 编辑过滤器 - 顺序很重要。当前提供的 timeline_django 过滤器包括

* ``session`` table to prevent session hijacking
* ``user`` table to prevent password disclosure

如果你的Django站点使用其他敏感表(例如,替代认证模块),你应该安排过滤它们。请参阅 timeline_django.filters 以获取示例代码。

如果你没有使用 python-oops 中的 timeline,你需要为你在使用的任何 timeline 捕获/查看系统安排删改。

非WSGI环境

如果你在其他环境中运行,你需要自己执行一些步骤。首先,你需要选择一个创建新 Timeline 对象的点。这需要与你要捕获的 timeline 的开始相对应。这可能是在脚本开始时,也可能是在响应其他事件时。

创建 Timeline 后,你需要将其存储在某个地方,以便在需要时可以访问。这可能是在一个变量中,也可能是如果你将会有多个线程处理不同的 timeline,则在线程局部存储中。一旦你存储了 Timline,你需要一个函数来返回它。这个函数将是你的 timeline_factory。它应该不接受任何参数,并在调用时返回一个 Timeline 对象,如果没有适用 Timeline,则返回 None

有了那个方法后,你可以调用 timeline_django 的 setup_for_requests 方法

from timeline_django.setup import setup_for_requests

setup_for_requests(timeline_factory=timeline_factory)

其中 timeline_factory 是你上面创建的函数。这将设置必要的钩子,以便在发生 DB 查询或 timeline_django 支持的 Django 其他事件时,将操作记录在你的 timeline 中。

版权(c)2012,Canonical Ltd

本程序是免费软件:您可以在自由软件基金会发布的GNU较小通用公共许可证的条款下重新分发和/或修改它,仅限版本3。

本程序是在希望它将是有用的希望下分发的,但没有任何保证;甚至没有关于适销性或适用于特定目的的暗示保证。有关更多详细信息,请参阅GNU较小通用公共许可证。

您应该已收到一份GNU较小通用公共许可证副本。如果没有,请参阅 <https://gnu.ac.cn/licenses/>。GNU较小通用公共许可证版本3(请参阅文件LICENSE)。

项目详情


下载文件

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

源分发

timeline_django-0.0.3.tar.gz (14.3 kB 查看哈希)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面