Ответ 1
Когда вы отправляете свою регистрационную форму, вы используете POST. Поскольку вы используете POST, ваши значения формы добавляются в request.form
, а не request.args
.
Ваш адрес электронной почты будет:
request.form.get('email')
Если вы нажимали URL /[email protected]
, и вы не сразу отображали шаблон с помощью:
if request.method == 'GET':
return render_template('character.html')
в вашем представлении символов, только тогда вы сможете получить доступ:
request.args.get('email')
Обратитесь к werkzeug request/response для получения дополнительной информации.
Изменить: Здесь приведен полный рабочий пример (минус ваши модели)
app.py
from flask import request, Flask, render_template, redirect, url_for
app = Flask(__name__)
app.debug = True
@app.route('/signup', methods=['GET','POST'])
def signup():
if request.method == 'GET':
return render_template('signup.html')
email = request.form['email']
return redirect(url_for('character', email=email))
@app.route('/character', methods=['POST', 'GET'])
def character():
email_from_form = request.form.get('email')
email_from_args = request.args.get('email')
return render_template('character.html',
email_from_form=email_from_form,
email_from_args=email_from_args)
if __name__ == '__main__':
app.run()
Шаблоны/signup.html
<html>
Email from form: {{ email_from_form }} <br>
Email from args: {{ email_from_args }}
</html>
Шаблоны/character.html
<html>
<form name="test" action="/character" method="post">
<label>Email</label>
<input type="text" name="email" value="[email protected]" />
<input type="submit" />
</form>
</html>
Отправка формы signin (через POST) будет заполнена Email from form
Нажатие на url http://localhost:5000/[email protected]
(через GET) заполнит Email from args