Javascript 如何在Django服务器上存储有关前端按钮的信息?
基本上,我想在服务器端存储一个按钮服务,这样它可以通过浏览器关闭和页面刷新来保持 以下是用户尝试执行的操作Javascript 如何在Django服务器上存储有关前端按钮的信息?,javascript,python,django,ajax,Javascript,Python,Django,Ajax,基本上,我想在服务器端存储一个按钮服务,这样它可以通过浏览器关闭和页面刷新来保持 以下是用户尝试执行的操作 用户在搜索栏中搜索产品列表 当结果显示时,会显示一个按钮,用于触发每个产品的操作。它们还显示一个主按钮,可以为列出的每个产品触发相同的操作 单击按钮后,我想将其禁用30秒,并在页面刷新和浏览器关闭期间保持此状态 我所做的 目前,我在客户端使用AJAX调用实现了这一点,但是如果页面刷新,它会重置按钮,然后他们可以再次单击它。因此,我研究了使用javascript的localStorage函数
按钮(\u id,上次单击作为时间戳,用户id)
查询时,只需按时间戳
和限制
1进行排序,即可获得最后一次单击。通过不覆盖原始值,可以确保更快的写入速度
如果您不希望每个用户的按钮行为类似,则必须与单击按钮的用户创建按钮的映射。即使您当前的需求不需要它们,也可以创建一个可扩展的解决方案,在该解决方案中,将用户映射到此表非常容易
我如何让Django在30秒后更新数据库以进行更新
按钮的状态从禁用变回启用
我避免在没有映射到更改的客户端请求的情况下更改数据库。这确保了并发性和访问控制。并且对于数据的当前状态具有更高的可预测性。接下来,我建议不要在时间增量(30秒)之后更新数据库
相反,您可以简单地比较上次单击的时间戳,并在发送响应之前计算服务器端或客户端的增量
<>这个决定可能很重要,考虑客户机在系统上的时间不同于服务器时间的情况。
当用户按下按钮时,它将使其禁用,但是
它只会使其在数据库中被禁用。什么是正确的选择
在不刷新页面的情况下实际禁用按钮的方法
客户端?我只是在javascript中禁用按钮30分钟吗
秒,然后如果他们尝试刷新页面,则视图将
查看产品列表的请求,它将检查
每个按钮状态的数据库,它将为按钮提供服务
正确吗
您需要执行POST
请求,以便将按钮按下时间戳与数据库进行通信。您还需要确保POST
请求成功,因为如果浏览器关闭,不成功的请求不会保留数据。
完成上述两项操作后,您可以仅从客户端禁用按钮,而无需尝试获取按钮
上次单击的时间戳 禁用按钮30秒的用例是什么?db中的写锁也能达到同样的效果吗?@SaurabhAriyan我不确定我是否完全理解你的问题,但我会尽力回答。我认为db中的写锁无法实现同样的效果。我甚至不希望用户能够点击按钮,如果它只是在过去30秒内点击。我觉得在你的建议中,他们仍然可以点击它,但它在服务器端没有任何作用。我觉得禁用它会给用户带来良好的反馈,直到时间结束,他们才能再次单击它。按钮禁用功能对每个用户都是独立的吗?如果用户A禁用了按钮,它是否也会禁用用户B的按钮?还有,应用程序中有多少这样的按钮?它只是一个特定的按钮,还是根据产品的数量增长?啊,我明白了,很抱歉。是如果用户A禁用该按钮,则应为所有其他用户禁用该按钮。现在我已经实现了一个数据库存储解决方案,这是一个非常有用的解决方案。我有一个简短的问题