У меня есть webapp, где я не использую Flask-login. Если пользователь посещает ссылку и не входит в систему, я перенаправляю пользователя на страницу входа. Я выполняю эту настройку «имя пользователя» в сеансе и проверяю, что когда пользователь пытается получить доступ к какой-либо ссылке напрямую без входа в систему, то в этом случае имя пользователя будет равно нулю.Flask как перенаправить на предыдущую страницу после успешного входа в систему
Я попытался следовать этому SO solution, но следующий параметр всегда отсутствует. Я попробовал оба решения, но не могу заставить их работать.
username = session.get('username')
if username:
# go to home
else:
next_url = request.url
login_url = '%s?next=%s' % (url_for('login'), next_url)
return redirect(login_url)
Второе решение
username = session.get('username')
if username:
# go to home
else:
return redirect(url_for('login', next= request.url))
печати (request.url) = локальный: 5000/visitPage
Войти Функция
if 'next' in request.args:
return redirect(next)
else:
return redirect(url_for("user.index"))
Вот когда я печатаю (рядом), то is None
Но логин url имеет следующий аргумент
http://localhost:5000/login?next=http%3A%2F%2Flocalhost%3A5000%2FvisitPage
Поместите здесь распечатка request.url из вторых решений. Если это None, 'url_for' пропускает его и не передает в качестве параметра запроса – theodor
Я включил печать. Это None, но request.url перед тем, как запрос и url будут иметь следующий, так почему это Null? Что-то не так, как я проверяю дальше? – jas
Вы используете функцию входа в систему, используя методы GET или POST? Если это POST, вы должны проверить request.form.get ('next') – theodor