我正在寻找一种通用方法来防止多次提交表单。我找到了这个 approach这看起来很有希望。而我不想在我的所有 View 中都包含此片段。使用请求处理器或中间件可能更容易做到这一点。
有什么最佳实践建议吗?
最佳答案
客户端,从 JavaScript 开始。您永远无法信任客户,但这是一个开始。
即
onclick="this.disabled=true,this.form.submit();
服务器端你“可以”向数据库中插入一些东西,即校验和。如果将其插入到数据库中,请使用 model.objects.get_or_create()
强制数据库级别的唯一性,您应该使用 unique_together。
最后:HTTPRedirect 是最好的,我在用户处理付款时使用的方法是向感谢/确认页面发出 HTTPRedirect()。这样刷新表单就不会重新提交,如果他们返回并尝试再次提交表单(不刷新表单),Django 跨站请求伪造 (CSRF) 将失败,完美!
关于python - 防止在 Django 中提交多个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671335/