Ошибка метода "PATCH" в django

У меня django rest framework и с generics views. Всякий раз, когда я пытаюсь сделать запрос PATCH, я получаю ошибку, что метод не разрешен.

Ниже приведен мой код views.py

class VisitorsLogBooktbViewSet(generics.ListCreateAPIView):
    queryset = VisitorsLogBooktb.objects.all()
    serializer_class = VisitorsLogBooktbSerializer

class Visitor_data(generics.RetrieveUpdateDestroyAPIView):
    queryset = models.VisitorsLogBooktb.objects.all()
    serializer_class = VisitorsLogBooktbSerializer

и ниже приведен мой код urls.py в корне приложения

urlpatterns = [
    path('', VisitorsLogBooktbViewSet.as_view(),),
    path('api/All-visitors/', Visitor_data.as_view(),),
]

Я попробовал изменить общие представления, создав представления только для обновлений, используя только generics.UpdateAPIView...... Но это все равно не работает.

Чтобы разрешить PATCH-запросы для обновлений, необходимо убедиться, что ваш шаблон URL правильно настроен с учетом ID объекта, который вы пытаетесь обновить.

Вот как вы можете исправить свой urls.py:

from django.urls import path
from .views import VisitorsLogBooktbViewSet, Visitor_data

urlpatterns = [
    path('', VisitorsLogBooktbViewSet.as_view(), name='visitors-log-book-list'),
    path('api/All-visitors/<int:pk>/', Visitor_data.as_view(), name='visitor-detail'),
]

В этой обновленной версии:

  1. Я добавил <int:pk> в шаблон URL для Visitor_data, который указывает, что это представление для одного объекта, идентифицируемого первичным ключом (pk).
  2. Благодаря включению <int:pk> в шаблон URL, Django REST Framework распознает запросы PATCH как обновления определенных объектов.
  3. Теперь вы должны иметь возможность отправлять PATCH-запросы к конечной точке /api/All-visitors/<id>/ для обновления определенных записей посетителей. Не забудьте заменить <id> на реальный первичный ключ посетителя, который вы хотите обновить.

Это даст 404 на URL api/All-visitors/.

Примером URL-адреса, который можно попробовать, может быть api/All-visitors/1.

Вернуться на верх