【问题标题】:Proper way to share temporary data between two users在两个用户之间共享临时数据的正确方法
【发布时间】:2017-12-07 03:09:35
【问题描述】:

这是我在 django 中的情况,我需要在两个用户之间创建匹配,用户轮流进行,其中一个完成后,我需要将 user1 分数发送给 user2,反之亦然。

  • 如何在两个玩家之间创建比赛?
  • 我如何以可供两个用户访问的方式存储他们的数据(分数)。

这是我尝试过的:user1 发送GET 请求,通过获取 user2 id 将 user2 作为对手(我可以说我在那里进行了匹配),然后在 user1 完成后,他发出另一个 GET 请求用他的 id 和分数给 django。这就是我卡住的地方:

我不知道如何将 user1 的分数发送给 user2。
我不知道如何存储数据,以便两个用户都可以访问彼此的分数。

我对 django 很陌生,所以我根据我对框架的基本知识做了所有这些,如果我错了,请纠正我,并可能提出更好的方法。

【问题讨论】:

  • 我没有使用 django 的经验,但是有一个临时数据库,pymotw.com/3/tempfile/index.html 可能对你有帮助吗?
  • @AyodhyankitPaul 谢谢我去看看

标签: python django algorithm django-rest-framework


【解决方案1】:

我会采取的一种方法是创建两个模型,一个用于匹配,另一个用于转弯。 Match 将包含字段,包括 player_1 和 player_2 的外键以及总得分、游戏活跃度和轮到的玩家。我要创建的第二个模型是一个回合,其中包含回合的详细信息和比赛的外键。

每次转弯都会是一个 CreateView,请参阅Class based views in the django docs。这将创建一个新回合,您应该能够自动添加它所属的游戏。

然后您将遇到的问题是通知其他用户已经采取了新的回合。最简单的方法是等待并让用户重新加载页面,但这可能会导致用户体验不佳。

下一种方法是创建一个 javascript 循环来定期轮询您的后端并在轮到其他玩家时创建警报。

最后,如果您想从后端推送到浏览器,您需要调查django channels,它允许您设置从后端到前端的 websocket 连接。这将允许您在新数据可用时更新您的 UI。

对于新用户,您可能希望按照概述的顺序逐步完成选项,以建立您的体验。

【讨论】:

  • 谢谢,会试试你的方法,看看效果如何
猜你喜欢
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多