"Метод \"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

Вернуться на верх