Ошибка метода "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'),
]
В этой обновленной версии:
- Я добавил
<int:pk>
в шаблон URL для Visitor_data, который указывает, что это представление для одного объекта, идентифицируемого первичным ключом (pk). - Благодаря включению
<int:pk>
в шаблон URL, Django REST Framework распознает запросы PATCH как обновления определенных объектов. - Теперь вы должны иметь возможность отправлять PATCH-запросы к конечной точке
/api/All-visitors/<id>/
для обновления определенных записей посетителей. Не забудьте заменить<id>
на реальный первичный ключ посетителя, который вы хотите обновить.
Это даст 404 на URL api/All-visitors/
.
Примером URL-адреса, который можно попробовать, может быть api/All-visitors/1
.