将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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a38d043e6438609a416d1983108399a53cbe3ac40cfeda911b22dbbb5f9a37cc |
|
MD5 | fc828a66272a7337e0fe7fe8fffba664 |
|
BLAKE2b-256 | 6385c95c3a4406cf5c95e2cbee7849db130b850f8273967e1ee1ad64a98cbe08 |