Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 阻止用户提交相同的表单n次_Python_Django_Apache - Fatal编程技术网

Python 阻止用户提交相同的表单n次

Python 阻止用户提交相同的表单n次,python,django,apache,Python,Django,Apache,我有一个Django编码的后端服务器,由Apache提供服务(Windows) 当我提交表单n次(单击html中的表单提交)时,它会将数据提交到数据库和服务器中n次 i、 e.当我在文本字段中输入“abc”并点击提交按钮10次时,我可以看到db有10条记录,其中“abc”作为数据 我尝试安装mod_evasive以防止DDOS攻击(虽然这是攻击的一个版本),但我仍然无法阻止用户只提交一次 德扬戈 def测试函数(请求): 如果request.method==“POST”: 表单=测试表单(req

我有一个Django编码的后端服务器,由Apache提供服务(Windows)

当我提交表单n次(单击html中的表单提交)时,它会将数据提交到数据库和服务器中n次

i、 e.当我在文本字段中输入“abc”并点击提交按钮10次时,我可以看到db有10条记录,其中“abc”作为数据

我尝试安装mod_evasive以防止DDOS攻击(虽然这是攻击的一个版本),但我仍然无法阻止用户只提交一次

德扬戈
def测试函数(请求):
如果request.method==“POST”:
表单=测试表单(request.POST)
如果form.is_有效():
form.save()
重新使用
其他:
形式=测试形式()
返回渲染
httpd.conf LoadModule evasive\u module modules/mod\u evasive.so

<IfModule mod_evasive.so>
  DOSEnabled          true
  DOSHashTableSize    3097
  DOSPageCount        2
  DOSSiteCount        1
  DOSPageInterval     1
  DOSSiteInterval     1
  DOSBlockingPeriod   10
</IfModule>

DOSSENABLED true
DOSHashTableSize 3097
DOSPageCount 2
剂量计数1
DOSPageInterval 1
剂量间隔1
剂量阻断周期10
请帮助我如何做到这一点


提前感谢

如果您想限制客户端可以发出的请求数量,可以使用提供节流功能的第三方库


我发现了一个为我们提供请求限制功能的包。

如果您想限制客户端可以发出的请求数量,可以使用提供限制功能的第三方库


我发现了一个为我们提供请求限制的包。

听起来您正在试图解决两个不同的问题

  • 防止DDOS攻击
  • 防止用户提交重复表单
  • 仅仅因为您限制了表单在定义的时间范围内可以接受的请求数量,并不意味着您将在提交的请求数量仍然小于分配的数量时阻止用户提交重复的表单

    也就是说,您需要一种方法来强制表单提交的唯一性,以防止重复表单。为此,您应该为表单创建自定义验证器。如果您这样做,您不仅能够验证表单是否可以提交,而且如果不能,您还可以向用户返回一条消息,让他们知道表单已经提交


    听起来你在试图解决几个不同的问题

  • 防止DDOS攻击
  • 防止用户提交重复表单
  • 仅仅因为您限制了表单在定义的时间范围内可以接受的请求数量,并不意味着您将在提交的请求数量仍然小于分配的数量时阻止用户提交重复的表单

    也就是说,您需要一种方法来强制表单提交的唯一性,以防止重复表单。为此,您应该为表单创建自定义验证器。如果您这样做,您不仅能够验证表单是否可以提交,而且如果不能,您还可以向用户返回一条消息,让他们知道表单已经提交


    显示您的代码。请查找附件代码显示您的代码。请查找附件代码
    <IfModule mod_evasive.so>
      DOSEnabled          true
      DOSHashTableSize    3097
      DOSPageCount        2
      DOSSiteCount        1
      DOSPageInterval     1
      DOSSiteInterval     1
      DOSBlockingPeriod   10
    </IfModule>