#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')
Глупая ошибка, моя вина.