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.