Колба не перенаправляет на «следующую» строку запроса

#flask #flask-login

#колба #колба-логин

Вопрос:

Ниже приведен код для моей функции входа в систему (упрощенный).
Я пытаюсь получить параметр «следующий» из URL-адреса для перенаправления пользователя. Но это не работает.

 @bp.route('/login', methods=['GET', 'POST']) def login():  if current_user.is_authenticated:  return redirect(url_for('main.dashboard'))   if request.method == 'POST':  form_data = request.form  email = form_data.get('email')  password = form_data.get('password')  ... (Assume here that the user logged in)  login_user(user, remember=True)  next_page = request.args.get('next')  if not next_page or url_parse(next_page).netloc != '':  next_page = url_for('main.dashboard')  return redirect(next_page)  return render_template('auth/login.html', title='Login')  

В приведенном выше коде next_page всегда пуст. Спасибо вам за помощь.

Комментарии:

1. можете ли вы привести пример URL-адреса, который не работает?

Ответ №1:

Проблема заключалась в том, что аргумент «следующий» не передается в запросе post. В итоге я сделал что-то подобное на странице входа в систему:

 lt;!-- Hidden input to store the next argument --gt;  lt;input  type="hidden"  name="next"  value="{{ request.args.get('next', '') }}"  /gt;  

И в маршруте колбы я извлекаю следующий аргумент из: next_page = request.args.get('next')

Глупая ошибка, моя вина.