我有 Django Rest 框架和泛型视图。每当我尝试发出 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>
添加到 Visitor_data 的 URL 模式中,这表明此视图适用于由其主键 (pk) 标识的单个对象。<int:pk>
,Django REST Framework 将 PATCH 请求识别为对特定对象的更新。/api/All-visitors/<id>/
发送 PATCH 请求以更新特定访客记录。确保将 <id>
替换为您要更新的访问者的实际主键。这将在 URL 上给出 404
api/All-visitors/
。
要尝试的示例 URL 可以是
api/All-visitors/1
。