我希望存储用户的活动,但我不确定将其存储在哪里。我不认为数据库是一个选择,因为它将非常大。我想知道像facebook,dropbox这样的网站是如何记住特定用户的所有活动的。它不能存储在会话中,因为它不是特定于会话的,而是特定于用户的。
请帮我提一下你的建议。
发布于 2013-02-21 20:04:03
通常情况下,如果您愿意,您可以使用Django Admin Logs来执行此类活动。
通常,Django会跟踪管理操作,如创建、更新或删除现有记录。它的结构如下:
from django.contrib.admin.models import LogEntry
LogEntry.objects.log_action(
user_id = ...,
content_type_id = ...,
object_id = ...,
object_repr = ....,
change_message = ...,
action_flag = ...
)我在我的系统中使用它作为记录器,并跟踪每一个动作。通常,Django记录在管理表单上执行的插入、更新或删除操作,而我记录我手写的视图和表单操作。此外,您还可以使用signals捕获用户操作,例如登录/注销。
我定义了新的操作标志。Django使用3个标志:1个用于插入,2个用于更新,3个用于删除。我用我的动作标志扩展了这个列表。
正如我所说的,使用它的好处是,您不需要处理默认的Django Admin表单和使用这些表单执行的任何操作。
发布于 2013-02-22 06:59:32
您可能想看看django-activity-stream,它是activity streams spec的一个实现。这将在数据库中存储操作列表,并允许以下用户/实体提供类似于Facebook的内容(如果这是您感兴趣的内容)。
然而,正如您所提到的,这最终可能会产生大量的数据集,这对于传统的单一数据库方法来说可能有点多。我不确定像Twitter这样的网站是如何处理它的,但除非您计划快速扩展,否则标准数据库方法可能会持续一段时间。
https://stackoverflow.com/questions/15001444
复制相似问题