Обработка ответа Http 302 в представлении Django и асинхронная функция Javascript

Для строгой безопасности, как я могу реализовать редирект на Django view в ответ на JS async вызов, который только обновляет div InnerHTML? Это первое предпочтение.

Я пробовал JS редирект на стороне клиента несколькими способами. Это тоже не помогло. JS продолжает отображать домашнюю страницу как InnerHTML в div.

Когда сессия пользователя завершается, сервер возвращает 302 Location: /. Чтобы перевести пользователя на домашнюю страницу.

View

@csrf_protect
def edit_form(request):

    if not request.user.is_authenticated:
         return redirect('/')

    form = userForm()
    return render(request, 'edit_form.html', {'form': form})

JS

async function fetch_form() {
try {
    const response = await fetch('http://192.168.1.10:8000/edit_form',{
        method: 'GET',
    });
    if (!response.ok) { //redirect didn't work
        const redirectUrl = response.headers.get('Location');
        console.log(redirectUrl);
        window.location.href = redirectUrl;
        //throw new Error('Network response was not ok ' + response.statusText);
    } else if (response.status === 302) { //redirect didn't work
        const redirectUrl = response.headers.get('Location');
        console.log(redirectUrl);
        window.location.href = redirectUrl;
    }
    document.getElementById('firstModal').innerHTML = data;
} catch (error) {
    console. Error('There has been a problem with your fetch operation:', error);
}
};


async function fetch_form() {
try {
    const response = await fetch('http://192.168.1.10:8000/edit_form',{
        method: 'GET',
    });
    if (!response.ok){
        throw new Error('Network response was not ok ' + response.statusText);
    }
    document.getElementById('firstModal').innerHTML = data;
} catch (error) {
    if (error.response.status === 302) { //redirect didn't work
        const redirectUrl = response.headers.get('Location');
        console.log(redirectUrl);
        window.location.href = redirectUrl;
    console.error('There has been a problem with your fetch operation:', error);
    }
}
};
Вернуться на верх