如何在Django中删除确认

时间:2019-10-10 12:50:49

标签: django

我正在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>

2 个答案:

答案 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 +模态。

相关问题