防止在Django中提交多个表单
我正在寻找一种通用的方法来防止提交多个表单。我发现这种方法看起来很有希望。而我不想在所有视图中都包含此代码段。使用请求处理器或中间件可能更容易做到这一点。
有什么最佳实践建议吗?
-
客户端,从JavaScript开始。您永远无法信任客户,但这只是一个开始。
即
onclick="this.disabled=true,this.form.submit();
在服务器端,您可以“向数据库中插入一些内容,即校验和”。如果将其记录插入数据库中,则可以
model.objects.get_or_create()
在数据库级别强制使用唯一性,则应使用unique_together。最后 :HTTPRedirect是最好的,当用户处理付款时,我使用的方法是将HTTPRedirect()发出到Thank you /
conformation页面。这样,刷新表单就不会重新提交,并且如果他们返回并尝试再次提交表单(不刷新表单),那么Django跨站点请求伪造(CSRF)将会失败,完美!