Как сделать Удалить Подтверждение в Джанго - PullRequest
1 голос
/ 10 октября 2019

Я работаю над проектом в Джанго. Я пытаюсь удалить предупреждение подтверждения перед удалением данных. Как это сделать.

Любой совет будет высоко ценится.

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 голосов
/ 10 октября 2019

Первый и самый важный момент: Вы НИКОГДА не изменяете (создаете / обновляете / удаляете) свою базу данных по запросу GET . Запрос GET ДОЛЖЕН быть идемпотентным. Если вы не понимаете, почему, перейдите в архив дневника wtf, чтобы узнать историю базы данных, которая очищалась каждый раз, когда робот Google сканировал сайт ...

И на самом деле это тоже часть ответа. Каноническим решением здесь является использование запроса GET для отображения формы подтверждения (которая будет использовать метод POST) и запроса POST для эффективного удаления данных.

Если вы хотите сделать вещи более сексуальными, вызатем можно использовать ajax + модал поверх этого.

0 голосов
/ 10 октября 2019

Вы можете использовать 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...