PUT 请求未出现在使用 ModelViewSet 的允许请求中

PUT request not appearing in allowed requests using ModelViewSet

我无法像文档中那样使用 ModelViewSet 发出放置请求。 我的观点,序列化器如下

class PostsViewSet(viewsets.ModelViewSet):
    queryset = PostsModel.objects.all()
    serializer_class = PostsSerializer

class PostsSerializer(serializers.ModelSerializer):
    class Meta:
        model=PostsModel
        fields=('id','title', 'author', 'body')

如图所示,PUT 方法在允许的方法中。

这是我的 posts.urls.py 即我的应用程序

router = DefaultRouter()
router.register('', PostsViewSet)


    urlpatterns = [
        path('', include(router.urls))
    ]

这是我的根 urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/posts', include('posts.urls')),
]

并响应

http://localhost:8000/api/posts/1/

我认为问题出在这里:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/posts', include('posts.urls')),  # <-- Here
]

应该是:

path('api/posts/', include('posts.urls')),   # need to append slash after posts

这里,PUT请求没有问题,问题出在路由本身。当你点击 /posts/1 它没有被 django 找到(因为配置不正确)。

id 后不需要尾部斜杠

变化:

http://localhost:8000/api/posts/1/

至:

http://localhost:8000/api/posts/1

或将 URL 模式更改为:

path('api/posts/', include('posts.urls')),

并使用下面的 url:

访问 API
http://localhost:8000/api/posts/1/