Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

6.4 Cоздание, редактирование и удаление записей
5 из 5 шагов пройдено

Теперь добавим возможность удалять книги.

Добавим функцию удаления книги delete_book() в файл books\views.py:

@require_http_methods(['DELETE'])
def delete_book(request, pk):
    book = get_object_or_404(Book, pk=pk)
    book.delete()
    return HttpResponse()


Добавим маршрут для данной функции, отредактируем файл books\urls.py:

from django.urls import path
from .views import (
    book_list,
    create_book,
    update_book_details,
    book_detail,
    delete_book,
)


urlpatterns = [
    path("", book_list, name="book_list"),
    path("create_book/", create_book, name="create_book"),
    path("update_book_details/<int:pk>/", update_book_details, name="update_book_details"),
    path("book_detail/<int:pk>/", book_detail, name="book_detail"),
    path("delete_book/<int:pk>/", delete_book, name="delete_book"),
]


Подключим кнопку Delete в файле шаблона templates\partial_book_detail.html:

                                <!-- Кнопка "Delete" -->
                                <button class="disbtn"
                                        hx-delete="{% url 'delete_book' book.id %}"
                                        hx-target="closest tr"
                                        hx-swap="outerHTML"
                                        hx-confirm="Are you sure you wish to delete this book?" >
                                    Delete
                                </button>


HTMX атрибуты для кнопки Delete:

  • hx-delete="{% url 'delete_book' book.id %}" определяет адрес запроса /delete_book/<id книги>/ и тип запроса - DELETE.
  • hx-confirm="Are you sure you wish to delete this book?" выводит соответствующее подтверждение перед запросом.

После нажатия данной кнопки будет удалена текущая книга, и её строка в таблице будет заменена на ответ - пустую строку.

Давайте проверим работу удаления записей, перейдем на наш сайт:


Выберем любую книгу, я выбрал с ID=1, и нажмем удалить:


После того, как мы подтвердили удаление, мы видим что наша запись была полностью удалена, обновления страницы так-же не потребовалось.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.