0

我有一个简单的 Django 视图,它确认删除了一个实例。此页面上有一个简单的表单,其中包含“取消”和“删除”两个按钮。

取消按钮只是将用户返回到按下原始删除按钮的页面。

Delete按钮跳转到执行实际操作的第二个视图。因此,我的 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 调用中是解决此问题的最佳方法,还是有更多标准/首选解决方案?谢谢!

4

2 回答 2

3

如何在confirmDeleteItem 视图中设置一个会话变量(即prepareToDelete = item.key)并在deleteItem 视图中检查该会话变量是否存在以及该值是否与item.key 匹配?然后你只需要在实际删除发生后将其删除。

于 2012-04-17T17:37:32.337 回答
1

一个我不确定的快速想法,但应该适用于您的情况。

deleteItem在您的视图中检查您的推荐人。就像在这段代码中一样。如果用户没有从confirmDelete视图中删除视图,请将他重定向到适当的confirmDelete视图。

于 2012-04-17T17:34:33.397 回答