“不允许使用方法\”GET\”。”

问题描述 投票:0回答:1

我真的需要帮助解释为什么我将方法作为 DELETE 传递,但错误出现“不允许方法“GET”。”非常感谢。

class DeleteUserByUsernameView(APIView):
    def delete(self, request, username):
        try:
            instance = User.objects.filter(username=username)
            instance.delete()
            return HttpResponse("Success")
        except Exception as e:
            return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
from django.contrib import admin
from django.urls import path, include
from . import views


urlpatterns = [
    path('delete/user/<str:username>/', views.DeleteUserByUsernameView.as_view()),
    path('register/', views.RegisterView.as_view(), name="Register"),
    path('login/', views.LoginView.as_view(), name="Login"),

]

在此输入图片描述

在此输入图像描述 在此输入图片描述

python django
1个回答
0
投票

您的路径有一个尾部斜杠:

#          trailing slash 🖟
delete/user/<str:username>/

这意味着您需要在 Postman 中工作:

#                    🖟
/delete/user/quyhoang/

如果你不这样做,并且

APPEND_SLASH
设置设置为
True
(这是默认值),如果没有尾部斜杠,并且没有路径匹配,Django将自动返回重定向(HTTP 响应 301)到路径 with 斜杠,因此 Postman 向该路径发出 GET 请求。

但解决方案是从头开始向路径with发出删除请求。由于重定向始终作为 GET 请求处理,因此它本质上“剥离”了原始 HTTP 方法。g

© www.soinside.com 2019 - 2024. All rights reserved.