#python #flask
#python #flask
Вопрос:
Я не уверен, почему страница перенаправляется на / index route после ввода имени пользователя
from flask import Flask, session, redirect, url_for, request
from markupsafe import escape
app = Flask(__name__)
# Set the secret key to some random bytes. Keep this really secret!
app.secret_key = b'_5#y2L"F4Q8znxec]/'
@app.route('/index')
def index():
if 'username' in session:
return 'Logged in as %s' % escape(session['username'])
return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form method="post">
<p><input type=text name=username>
<p><input type=submit value=Login>
</form>
'''
@app.route('/logout')
def logout():
# remove the username from the session if it's there
session.pop('username', None)
return redirect(url_for('index'))
Код взят из документации quickstart для flask
Комментарии:
1. ваша функция просмотра входа возвращает перенаправление на
url_for('index')
…2. @monsieuralfonse64 я могу понять это для POST menthod, но на самом деле я говорил о: return «‘ <метод формы =»post»> <p><тип ввода= текстовое имя = имя пользователя> <p><тип ввода= значение отправки= Логин> </форма> «‘
3. Когда вы отправляете форму, она отправляет POST-запрос на сервер, и это будет обработано в
if request.method == POST
, поэтому вы будете перенаправлены.4. Куда вы хотите перенаправить пользователей в случае успешного входа в систему?
5. @SeyiDaniel это не мой код, я просто выбрал его из документации Flask. У меня возникли сомнения, почему страница перенаправляется после того, как пользователь вводит имя пользователя
Ответ №1:
На самом деле, @monsieuralfonse64 уже дал ответ, поэтому я просто резюмирую его.
Поскольку ваша форма устанавливает method="post"
атрибут:
@app.route('/login', methods=['GET', 'POST'])
def login():
# ...
return '''
<form method="post">
<p><input type=text name=username>
<p><input type=submit value=Login>
</form>
'''
Когда вы отправляете форму, браузер отправляет данные в виде метода POST, поэтому он запускает if request.method == 'POST':
инструкцию, затем выполняет return redirect(url_for('index'))
, наконец, перенаправляет вашу страницу в / index.