我正在基本 Django Web 应用程序中上传图像文件。有一个upload
html 模板中的按钮被form
标签。一旦upload
按钮被按下,底层view
接管并处理图像上传。
在我同事 Macbook 的 Chrome 浏览器中,按upload
多次确实很快就能多次调用底层函数。我最终得到了大量正在上传的图像副本。
然而,这在我自己环境的 Firefox(Ubuntu 操作系统)中是不可复制的。看来这个问题是浏览器敏感的?
无论如何,我该如何切断这个代码行为呢?如果用户陷入点击狂潮,我不希望出现多个图像。有人可以指导我如何在 Django 中处理这个问题吗?我更喜欢一个non-JS,服务器解决方案也是如此。
注意:如果您需要查看我的相关代码,请告诉我。
很多人都面临这个问题。如果提交按钮调用了 3 次而不等待刷新浏览器,它将添加 3 次。为了防止这种情况,你可以使用 jQuery。
例如,在表单提交上,您可以显示加载程序或禁用提交按钮,
$('#login_form').submit(function() {
$('#gif').css('visibility', 'visible');
or
$('#button').prop('disabled', true);
});
编辑服务器端实现:
从用户界面的角度来看,我不建议这样做,但如果您还可以使用会话或 cookie 进行有效提交。在您的视图中生成随机令牌并将其在表单中设置为隐藏输入。
例如,
def checkform(request):
form = ExampleForm(request.POST or None)
randomtoken = #generate random token here and set in session or cookie
if form.is_valid():
# check_token here
session_value == request.POST.get('your_hidden_token')
# if matched than change the random token and save your data else do your restriction processing
render ( request,'template.html',context={ 'form':form,'randomstring':randomstring } )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)