我有一个简单的Django视图,确认删除实例。在此页面上有一个简单的表单,其中包含两个按钮,“取消”和“删除”。
取消按钮只是将用户返回到按下原始删除按钮的页面。
删除按钮跳转到执行实际操作的第二个视图。因此,我的URL定义如下:
url(r'^confirmDeleteItem/(?P<item_key>\w+)$', 'confirm_delete_item'), # Confirms
url(r'^deleteItem/(?P<item_key>\w+)$', 'delete_item'), # Performs the action
在确认页面上,表单定义为访问第二个URL的POST操作:
<form action="/squash/deleteItem/{{ item.key }}/" method="POST">
...
</form>
我遇到的问题是项目相当大(它们存储大量数据)和敏感,所以我想强迫用户每次都跳过确认箍。
我想要阻止用户手动访问/deleteItem/
页面,或者只是隐藏浏览器对此页面的加载,以避免它被存储在历史记录中,意外添加书签等。< /强>
将动作包装在AJAX调用中是解决此问题的最佳方法,还是有更多标准/首选解决方案?谢谢!
答案 0 :(得分:3)
如何在confirmDeleteItem视图中设置会话变量(即prepareToDelete = item.key)并检查deleteItem视图是否存在此会话变量以及该值是否与item.key匹配?然后你只需要在实际删除后删除它。
答案 1 :(得分:1)
一个我不确定的快速想法,但应该适合你的情况。
在deleteItem
视图中检查您的引用者。就像this snippet of code一样。如果用户未从confirmDelete
视图进入删除视图,请将其重定向到相应的confirmDelete
视图。