Django LoginRequiredMixin не перенаправляет на страницу входа в систему

У меня есть сайт электронной коммерции на django, и когда я пытаюсь добавить продукт без входа в систему, я не перенаправляюсь на страницу входа.

Когда я пытаюсь добавить товар, не будучи зарегистрированным в системе, на моем терминале появляется сообщение:

[16/Jun/2024 07:18:26] "POST /cart/ HTTP/1.1" 302 0

[16/Jun/2024 07:18:26] "GET /login/?next=/cart/ HTTP/1.1" 200 134934

Но я остаюсь на той же странице. Почему это не перенаправляет меня на страницу входа в систему? Заранее спасибо!

Мой views.py:

Мой urls.py:

path('login/', views.user_login_view, name='login'),

Мой settings.py:

LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = ''

Основываясь на том, что вы работаете с парсингом JSON и возвращаете JSON-слоб (пожалуйста, не делайте этого), я предполагаю, что вы делаете AJAX запрос.

Теперь AJAX, как гласит название, является A синхронным, он делает эти запросы, и даже следует за редиректами, чтобы сделать запросы, но сам браузер не показывает запрос и ответы: JavaScript делает запрос, видит перенаправление и делает еще один запрос. Таким образом, вызов AJAX заканчивается HTML-содержимым представления входа в систему.

You thus will need to add logic to the AJAX handling, and if the user is not logged in, thus let the JavaScript redirect the browser to the login view. I would also advise to use the Django REST framework [drf-doc] or some other REST framework to handle REST APIs, since now you impelement a lot of boilerplate code. Furthermore prevent the user from visting a page where one can make an AJAX request that requires authentication: preemptively check this.

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