我正在Django的一个项目上工作。我正在尝试在删除数据之前执行删除确认警报。怎么做。
任何建议将不胜感激。
views.py
def del_data(request, obj_id):
del_data = Order_data.objects.filter(order_no=obj_id)
if len(del_data) > 0:
del_data.delete()
return redirect('/home/')
return render(request, 'delete_conf.html', {})
urls.py
urlpatterns = [
path('delete/<int:obj_id>/',views.del_data,name="del_data")
]
delete_conf.html
<table id="order_view_table">
<tr>
<th>Name</th>
<th>Email</th>
<th>ACTION </th>
{% for i in result %}
<tr id="get_data">
<td id="name">{{ i.name }} </td>
<td>{{ i.email}} </td>
<td><a href="{% url 'app:edit_data' i.order_no %}" > <i class='fas fa-edit' ></i></a><a href="{% url 'app:del_data' i.order_no %}"><i class='fas fa-trash-alt' ></i></a>
</tr>
{% endfor %}
</table>
答案 0 :(得分:0)
您可以像这样使用javascript
:
<table id="order_view_table">
<tr>
<th>Name</th>
<th>Email</th>
<th>ACTION </th>
{% for i in result %}
<tr id="get_data">
<td id="name">{{ i.name }} </td>
<td>{{ i.email}} </td>
<td><a href="{% url 'app:edit_data' i.order_no %}" > <i class='fas fa-edit' ></i></a><a href="#" onclick="confirm_delete('{{i.order_no}}');"><i class='fas fa-trash-alt' ></i></a>
</tr>
{% endfor %}
</table>
<script>
function confirm_delete(orderno){
var r = confirm("Sure you want to delete?");
if (r == true) {
window.location.href="{% url 'app:del_data' "+ orderno +"%}"
}
</script>
答案 1 :(得分:0)
第一个也是最重要的一点:您绝不会在GET请求中更改(创建/更新/删除)数据库。 GET请求必须是幂等的。如果您不明白为什么,请浏览thedailywtf档案,以查找每次Google bot抓取该网站时都清空的数据库故事。
实际上,这也是答案的一部分。规范的解决方案是使用GET请求显示确认表单(将使用POST方法),并使用POST请求有效删除数据。
如果您想让事情变得更性感,则可以在此之上使用ajax +模态。