"Метод \"GET\" не разрешен".
Мне очень нужна помощь, чтобы объяснить, почему я передаю метод как 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"),
]
введите описание изображения здесь
введите описание изображения здесь введите описание изображения здесь
Ваш путь содержит косую черту:
# trailing slash 🖟
delete/user/<str:username>/
Значит, вам нужно работать в Postman с:
# 🖟
/delete/user/quyhoang/
Если вы этого не сделаете, а параметр APPEND_SLASH
будет установлен True
(по умолчанию), то Django, если не будет слеша в конце, и ни один путь не совпадает, автоматически вернет редирект (HTTP-ответ 301) на путь со слешем, в результате чего Postman сделает GET-запрос на этот путь.
Но решение заключается в том, чтобы сделать запрос DELETE на путь с косой чертой с самого начала. Поскольку перенаправление всегда обрабатывается как GET-запрос, то оно, по сути, "зачеркивает" исходный HTTP-метод.g