Django DRF показывает требуемый метод аутентификации, соответствующий URL

Я столкнулся со странной проблемой в Django REST Framework (DRF).

# views.py
class CheckoutView(APIView):    
    permission_classes = [AllowAny]
    
    def post(self, request, *args, **kwargs):
        return Response({'total_price': 7879})

#url.py
urlpatterns = [
    path("cart/checkout/<int:new>", checkoutView.as_view() , name="checkout"), # url 1
    path("cart/checkout/", checkoutView.as_view() , name="checkout"), # url 2
]

проблема :
если я набираю url 1, то получаю ответ 200

если я нажимаю на url 2, он выдает ответ 401 { "подробно": "Учетные данные для аутентификации не были предоставлены." }

обратите внимание, что в представлении есть 'permission_classes = [AllowAny]', также у меня нет определенного класса разрешений по умолчанию в settings.py

Существует разница между аутентификацией и разрешениями. У APIView также есть атрибут .authentication_classes, который определяет, как проверить, вошел ли пользователь в систему. По умолчанию это BasicAuthentication и SessionAuthentication.

Даже если вам, таким образом, не нужно иметь никаких разрешений, он просто запустит логику аутентификации, и если в запросе есть, например, заголовок HTTP_AUTHORIZATION, его нужно отформатировать, например, как basic username:password.

Таким образом, вам следует посмотреть, какой заголовок аутентификации вы отправляете в представление, и, скорее всего, он не соответствует правильной структуре.

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