django app 逻辑提示

发布于 2024-12-01 22:48:33 字数 288 浏览 3 评论 0原文

我正在学习 Django,因此我正在开发一个如下所述的应用程序。

该应用程序允许用户(经过身份验证的和匿名的)向其他用户发送消息。

经过身份验证的用户可以发送消息,并且可以像使用此功能的所有应用程序一样简单地跟踪所有消息。 (例如 Facebook 消息)

问题在于匿名用户。我希望匿名用户可以向其他用户发送消息,但他可以跟踪他的会话的消息。用户还可以回复匿名用户的消息,但如果匿名用户丢失了他的会话,他的消息也会丢失。

问题是,如何管理匿名用户及其会话的消息?

I'm learning Django and for this reason I'm developing an application described below.

This application allows users (authenticated and anonymous) to send message to other users.

Authenticated users can send message and can track all messages simply as all application that uses this feature. (like Facebook messages, for example)

The problem are anonymous users. I would an anonymous user can send message to other users but he can track his messages only for his session. Users can also reply to a message of an anonymous user but If an anonymous user lost his session lost also his messages.

The problem is, how can I manage anonymous user and their messages for the session only?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黑寡妇 2024-12-08 22:48:33

Django 支持匿名会话。

如果您的应用程序相对简单(听起来确实如此),我会执行以下操作:

  1. 创建一个标准 Django 用户配置文件模型并将其链接到用户消息,但不要使用 OneToOne 连接到用户。
  2. 使用数据库支持的会话(https://docs.djangoproject.com/en/dev/topics/http/sessions/#using-database-backed-sessions)
  3. 为匿名用户创建临时用户配置文件模型并存储
    他们在会话中的临时配置文件 ID。
  4. 每天一次删除所有没有用户的配置文件对象并且
    其 id 不在会话表中。一种简单的方法(也是我会做的)是在配置文件上创建一个创建的日期/时间字段,然后删除两周或更长时间前创建的并且具有空用户字段的任何配置文件。我只是 crontab 一个 django 管理命令。

很酷的是,如果有人在匿名使用该应用程序一段时间后注册,您可以使用他们的临时个人资料作为他们的个人资料,并且他们会保留他们的消息。

Django supports anonymous sessions.

If your app is relatively simple (it sounds like it is), I would do the following:

  1. Create a standard Django user profile model and link that to the users messages but do not use OneToOne to connect to User.
  2. Use database backed sessions (https://docs.djangoproject.com/en/dev/topics/http/sessions/#using-database-backed-sessions)
  3. Create a temporary user profile model for anonymous users and store
    their temporary profile id in their session.
  4. Once a day delete all profile objects that do not have a user AND
    whose id is not in the sessions table. A simple way (and what I would do) is have a created date/time field on the profile and just delete any profile that was created two weeks or more ago and has a null user field. I'd just crontab a django management command.

The cool thing is that if somebody registers after using the app anonymously for a while you can use their temporary profile as their profile and they keep their messages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文