当前位置: 首页 > 面试题库 >

是否存在用于防止django重复提交表单的库?

江正德
2023-03-14
问题内容

我试图找到一种方法来防止用户重复提交我的表格。我有禁用了提交按钮的javascript,但是仍然偶尔有用户找到重复提交的方法。

我对可以创建一个可重用的库进行保护的构想。

在我理想的库中,代码块如下所示:

try:
    with acquire_lock({'field1':'abc', 'field2':'def'}) as lock:
        response = #do some credit card processing
        lock.response = response
except SubmissionWasDuplicate, e:
    response = e.response

锁表如下所示:

duplicate_submission_locks

  • Submit_hash#提交参数的MD5
  • 响应#腌制数据
  • created_at#用于清除该表
  • lock_expired#布尔值,表示锁是否已过期

有谁知道这是否已经存在?它似乎并不难编写,所以如果不存在,我可以自己编写。


问题答案:

解决此问题的一种简单方法是为每个表单添加唯一的哈希。然后,您可以拥有当前表格的滚动表。提交表单或哈希表过旧时,您可以将其从表中过期,并拒绝表中没有匹配哈希表的任何表单。

如前所述,HTTPRedirect是正确的方法。

不幸的是,即使Django自己的内置admin也容易出现与此问题相关的问题。在某些情况下,跨站点脚本框架可以帮助防止某些情况,但是,恐怕当前的生产版本根本没有内置此功能。



 类似资料:
  • 问题内容: 我的表单需要服务器处理一些时间。我需要确保用户等待并且不会再次单击按钮来尝试重新提交表单。我尝试使用以下jQuery代码: 当我在Firefox中尝试此操作时,所有功能都被禁用,但是该表单未与应该包含的任何POST数据一起提交。我不能使用jQuery提交表单,因为我需要将按钮与表单一起提交,因为有多个提交按钮,并且我确定POST中包含哪个值使用了哪个按钮。我需要像平常一样提交表单,并且

  • 问题内容: 我有的: 我有一个通过AJAX提交的表格。 我想要的是: 我想防止重复提交。由于仅在成功完成请求后该表单才会消失,因此只要数据库尚未完成数据写入,用户就可以单击“提交”按钮。显然,我不需要。 我尝试过的 我尝试将其添加到“提交”按钮本身中,但是它不起作用。该按钮被禁用,但是没有数据发送。 我也尝试将点击处理程序添加到“提交”按钮。具有与以前相同的效果。实际上没有数据发送到控制器,但是按

  • 1、通过JavaScript屏蔽提交按钮(不推荐) 2、给数据库增加唯一键约束(简单粗暴) 3、利用Session防止表单重复提交(推荐) 4、使用AOP自定义切入实现

  • 我正在做一个Django项目,其中一个表单不会提交。我发现罪魁祸首是一些JavaScript,它格式化了货币输入(当我移除JS或移除输入时,它提交) 这是我的简化表单--JS来自html5货币/货币输入

  • 本文向大家介绍一个JavaScript防止表单重复提交的实例,包括了一个JavaScript防止表单重复提交的实例的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍防止Layui form表单重复提交的实现方法,包括了防止Layui form表单重复提交的实现方法的使用技巧和注意事项,需要的朋友参考一下 在提交表单数据时,提交按钮为 submit 类型,以layui为js框架时,会重复提交表单数据,为防止这一情况,有效的做法是: 在<form>里面,加上 lay-filter="formConfig" , οnsubmit="return fa