如何让django中的视图到期?

时间:2014-04-08 07:45:48

标签: django django-forms django-views

我有一些商品供消费者购买,让我们说有10本有限的书籍。用户必须尽快提交他们的信息表格才能获得该书。

我担心的是,如果有30个人提交表格,那么只能有10个人拿到这本书,而其他20个人会浪费时间,这会损害用户体验。

我想要的是,我将页面打开计数存储在db中,如果有10个人打开了该页面,我将停止该视图。但是,如果有人关闭那个窗口并且不买?怎么办?然后剩下的书永远不会出售。

我该如何解决这个问题?我想知道如果打开页面的人在特定时间内没有回答,我是否可以再次启用该视图?

2 个答案:

答案 0 :(得分:1)

您可能希望实施2层系统。

第一层是销售书籍的数量。一旦你卖了10本书。操作已完成,您可以停用视图。

为了防止更多用户调用此优惠的网址,我推荐您使用AJAX Heartbeat:

  • 用户请求网址
  • 为此用户设置了会话并且超时,以防该用户在X分钟/小时/等时没有任何内容。如果达到超时:会话将被删除
  • 商品柜台增加1
  • javascript通过ajax发送保持活动的心跳,因此您的系统知道用户仍在使用该网址并且没有移动到其他地方。
  • 如果心跳停止:删除会话并减少优惠计数器1.

这确保了一次只能有10个人查看您的视图,但您可以销售所有10本书。

您的计数器已满时可能需要重定向到其他页面?

答案 1 :(得分:0)

您可以向每个用户添加一些Cookie,并使用页面查看信息保存在数据库Cookie值中。并且您可以保存用户IP地址以改善您的系统。