From 5d34332ba4f2fea3a8418ab55585da5eb8287d07 Mon Sep 17 00:00:00 2001 From: Guamss Date: Tue, 16 Dec 2025 11:17:41 +0100 Subject: [PATCH] added delete route --- api/urls.py | 6 +++--- books/views.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/api/urls.py b/api/urls.py index ff2dd21..8048605 100644 --- a/api/urls.py +++ b/api/urls.py @@ -14,14 +14,14 @@ Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ +from django.conf.urls.static import static from django.contrib import admin from django.urls import path from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView from api import settings from books import views -from books.views import UserProfileView, BookListCreateView -from django.conf.urls.static import static +from books.views import UserProfileView, BookListCreateView, BookDetailView urlpatterns = [ path('admin/', admin.site.urls), @@ -29,8 +29,8 @@ urlpatterns = [ path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), path('api/profile', UserProfileView.as_view(), name='user_profile'), path('api/books', BookListCreateView.as_view(), name='book_list_create'), + path('api/books//', BookDetailView.as_view(), name='book-detail'), path('api/users/', views.find_user_by_id, name='user-detail'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) - diff --git a/books/views.py b/books/views.py index 5b68e80..b43f155 100644 --- a/books/views.py +++ b/books/views.py @@ -25,6 +25,27 @@ class BookListCreateView(APIView): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + def delete(self, request, book_id): + try: + book = Book.objects.get(id=book_id) + book.delete() + return Response(status=status.HTTP_200_OK) + except Book.DoesNotExist: + return Response({"message": "Ce livre n'existe pas"}, status=status.HTTP_404_NOT_FOUND) + + +class BookDetailView(APIView): + permission_classes = [IsAuthenticatedOrReadOnly] + + def delete(self, request, book_id): + try: + book = Book.objects.get(id=book_id) + book.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + except Book.DoesNotExist: + return Response({"message": "Ce livre n'existe pas"}, status=status.HTTP_404_NOT_FOUND) + + @api_view(['GET']) def find_user_by_id(request, user_id): try: @@ -32,6 +53,7 @@ def find_user_by_id(request, user_id): books_queryset = Book.objects.filter(user=user) books_serializer = BookSerializer(books_queryset, many=True) return Response({ + 'id': user.id, 'username': user.username, 'first_name': user.first_name, 'last_name': user.last_name, @@ -51,6 +73,7 @@ class UserProfileView(APIView): books_queryset = Book.objects.filter(user=user) books_serializer = BookSerializer(books_queryset, many=True) return Response({ + 'id': user.id, 'username': user.username, 'first_name': user.first_name, 'last_name': user.last_name,