Django HttpResponseRedirect возвращает перенаправление в браузер, но браузер не перенаправляет

def auth(request):
    if request.method == 'GET':
        return render(request, 'Study/auth.html')
    elif request.method == 'POST':
        try:
            data = dict_from_raw_data(request.body)
            user = User.get_user(data['login'], data['password'])
            request.session['cookie'] = user.cookie
            return HttpResponseRedirect(reverse('main'))
        except django.core.exceptions.ObjectDoesNotExist:
            return JsonResponse(USER_DOES_NOT_EXIST)

path('', main, name='main')...
function getCookie (name) {
   let cookie_value;
   let cookies = document.cookie.split(';');
   for (let idx = 0; idx < cookies.length; idx++){
      if (cookies[idx].split('=')[0].trim() == name){
         cookie_value = cookies[idx].split('=')[1].trim();
         return cookie_value;
      }
   }
}


function send (data, csrftoken) {
    let request = new XMLHttpRequest();
   request.open('POST', document.location, false);
    request.setRequestHeader('X-CSRFToken', csrftoken);
    data = JSON.stringify(data);
    console.log(data);
    request.send(data);
    console.log(request.responseType);
}


let button = document.getElementById('button');
let csrftoken = getCookie('csrftoken');

button.onclick = () => {
   let form = document.getElementById('auth');
   let data = new Object();
   for (let i = 0; i < form.elements.length; i++){
      data[form.elements[i].name] = form.elements[i].value;
   }
   console.log(data);
   send(data, csrftoken);
}

Пользователь отправляет форму для авторизации и, в случае успеха, сервер возвращает перенаправление. Но перенаправления не происходит. В консоли отображается html-код нужной мне страницы. Django показывает, что запросы get прошли с кодом 200. Как можно решить эту проблему?

Я пытался использовать перенаправление, HttpResponseRedirect, но я не знаю, в чем причина

Вместо этого сделайте return reverse('main'), что должно дать вам путь к странице, которую вы хотите отобразить. Затем в JavaScript сделайте window.location.href = 'http://127.0.0.1' + request.responseText (я предполагаю, что вы делаете это локально, но если нет, просто измените первую строку на URL вашего сервера).

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