Как перенаправить с помощью Flask и JQuery

использую Flask в качестве бэкэнда и jQuery для личного проекта.Я работаю над.

Для входа я хочу сделать это:

$.ajax({ 
    type: "POST",
    data: JSON.stringify(body), //username and password
    contentType: 'application/json; charset=utf-8',
    url: "/login",
    success: successFunction,
    error: errorFunction,
    complete: completeFunction
});

В функции errorFuction я бы сказал пользователю, что его имя пользователя или пароль неверны и т. Д.

На бэкенде мой / логин маршрут выглядит так

@app.route("/login", methods=['GET', 'POST'])
def login():
    if(request.method == "POST"):
        #retrieve the username and password sent
        data = request.json

        if(data is None or not 'username' in data or not 'password' in data):
            abort(400)
        else:
            count = User.query.filter(User.username == data['username']).count()
            if(count == 0):
                abort(404) #that user doesnt exist
            else:
                passIsCorrect = User.query.filter(User.username == data['username'],
                                                  User.password == data['password']).count()
                if(passIsCorrect):
                    session['user'] = data['username']
                    return redirect(url_for('index'))
                else:
                    abort(401)

    else:
        return render_template('login.html')

Однако на стороне клиента браузер неt перенаправить, и если я смотрю на объект ответа в полной функции, я вижу, что обычно будет возвращаться из моего '/' route: 200 OK и шаблон index.html.

Мой вопрос:

Есть ли какой-нибудь способ, которым я могу перехватить, чтобы перенаправить клиента?

Я предполагаю, что проблема в том, что jquery инициирует запрос, а не браузер.

Моя первая попытка решить эту проблему состояла в том, чтобы построить ответ самостоятельно, используяmake_response и установите заголовок Location, но это привело к тому же поведению. Мое текущее решение состоит в том, чтобы вернуть 200, а затем клиент делаетwindow.location = "/", но это кажется взломанным

Ответы на вопрос(2)

Ваш ответ на вопрос