在我的应用程序中单击按钮会调用一个视图,该视图会进行一些数据库更改,然后重定向到呈现 html 的新视图。当用户通常点击链接时,他不小心在几秒钟内点击了两次到三次。如果在不到 10 秒前进行了相同的呼叫,我想阻止查看呼叫。当然我可以通过检查数据库来做到这一点,但我希望通过在 django 中使用一些装饰器来获得更快的解决方案。
问问题
145 次
3 回答
2
单击该按钮后,您应该使用 JavaScript 禁用该按钮。
这样用户就无法多次触发视图。
于 2013-09-27T22:55:06.687 回答
2
这应该会有所帮助。这是一个JavaScript来禁用点击按钮,在操作完成后启用它。
$(document).ready(function () {
$("#btn").on("click", function() {
$(this).attr("disabled", "disabled");
doWork(); //this method contains your logic
});
});
function doWork() {
alert("doing work");
//actually this function will do something and when processing is done the button is enabled by removing the 'disabled' attribute
//I use setTimeout so you can see the button can only be clicked once, and can't be clicked again while work is being done
setTimeout('$("#btn").removeAttr("disabled")', 1500);
}
更多信息在这里。
于 2013-09-27T23:10:25.870 回答
1
不,你不能在 Django 中使用装饰器来做到这一点。
您的视图文件中的方法应该告诉您在屏幕上显示什么。然而,创建模板文件是为了告诉 Django你想如何显示它们。
您希望 Django 不计算同一视图上的两个连续调用。
问题是:
“连续”是什么意思?我应该多快单击以使其“不连续”?如果我编写一个执行点击的脚本怎么办?那你怎么定义连续的?
即使您确实使用了一些技巧来完成上述部分,下一个问题将是区分来自不同用户的请求(针对该视图)。您将如何区分它们以确定特定用户的“连续性”?
为什么要进行不必要的更改来做所有这些事情?
Django 也应该与其他东西一起使用。我已经学会了这个艰难的方式。使用 Javascript 是唯一的方法,没有任何问题。
客户端,一键点击!禁用。非常快,您在池中有请求。
做这部分很容易。有关更多信息,请参阅这些链接:
于 2013-09-27T23:25:45.530 回答