“详细信息”:“方法\删除\不允许”Django

2024-10-03 19:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个视图,可以使用modelviewset使用put、delete请求,并将其映射到url。我已经清楚地使请求放置和删除请求到url成为可能,但若您将删除请求发送到url,我将返回405错误。我的代码怎么了?这是我的密码

views.py

class UpdateDeletePostView (ModelViewSet) :
    serializer_class = PostSerializer
    permission_classes = [IsAuthenticated, IsOwner]
    queryset = Post.objects.all()

    def update (self, request, *args, **kwargs) :
        super().update(request, *args, **kwargs)
        return Response({'success': '게시물이 수정 되었습니다.'}, status=200)

    def destroy (self, request, *args, **kwargs) :
        super().destroy(request, *args, **kwargs)
        return Response({'success': '게시물이 삭제 되었습니다.'}, status=200)

feed\url.py

path('post/<int:pk>', UpdateDeletePostView.as_view({'put': 'update', 'delete': 'destroy'})),

服务器\url.py

path('feed/', include('feed.urls')),

和错误

"detail": "method \delete\ not allowed"

Tags: pyselfurlputrequestdeffeed错误
1条回答
网友
1楼 · 发布于 2024-10-03 19:21:52

正如我在评论中所写的,看起来您不需要ViewSet,因为您只处理单个项目上的操作。 通常,可以使用适当的混合来限制视图或视图集的可用操作

我建议两种可能的方法

使用通用视图

class UpdateDeletePostView(
        UpdateModelMixin,
        DeleteModelMixin,
        GenericAPIView):
    .....

urlpatterns = [
    path('post/<int:pk>', UpdateDeletePostView.as_view()),
    ...
]

使用视图集和路由器

class UpdateDeletePostViewSet(
        UpdateModelMixin,
        DeleteModelMixin,
        GenericViewset):
    .....
router = SimpleRouter()
router.register('feed', UpdateDeletePostViewSet)

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

相关问题 更多 >