1
6
这个问题的一个简单的解决方案是向每个表单添加一个唯一的哈希。然后您可以拥有一个当前表单的滚动表。当表单被提交或哈希值太旧时,您可以将其从表中过期,并拒绝表中没有匹配哈希值的任何表单。 正如前面提到的,httpredirect是正确的方法。 不幸的是,即使是Django自己的内置管理也容易出现与此问题相关的问题。在某些情况下,跨站点脚本框架可以帮助防止这种情况的发生,但恐怕当前的生产版本没有内置这种功能。 |
2
10
可以使用会话存储哈希
使用这种方法(而不是删除会话cookie),用户无法在会话过期时重新存储数据,顺便说一下,我假设存在标识发送数据的用户的东西。 |
3
4
老实说,您的最佳选择(简单而良好的实践)是向“谢谢”页发出一个httpredirect(),如果“谢谢”页与表单相同,那就可以了。你仍然可以这样做。 |
4
3
克里斯蒂安·达米安的回答确实是一个很好的建议。我只是想在这个主题上做些小小的改动,但它可能会有更多的开销。
您可以尝试实现在
django-piston
对于
从 handler.py (基础处理器):
所以让我们假设一个函数
|
5
2
使用事后重定向方法总是很好的。这可以防止用户使用浏览器中的刷新功能意外地重新提交表单。即使使用哈希方法,它也很有用。这是因为在发帖后没有重定向,如果点击后退/刷新按钮,用户会看到一条关于重新提交表单的问题消息,这可能会使她困惑。 如果在每次发帖后都进行get重定向,那么回击/refresh不会显示此wierd(对于普通用户)消息。因此,对于完全保护,在发布后使用hash+重定向。 |
Florent · 如何在Django中聚合多个字段? 1 年前 |
KWunsch · Django没有将pk引入模板 1 年前 |
Akshay mek · Vscode扩展建议不适用于某些文件夹 1 年前 |
Farid · 限制django每个客户的访问 1 年前 |
Blue · 从Django中的输入字段获取用户输入 2 年前 |
4SadMemeXD · 无法在Django中选择相关类别 2 年前 |