Сама ошибка:
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'name'
Попытался накидать по примеру аналогичный код.
main.py:
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<username>')
def successfully_signed_in(username):
return 'welcome, %s' % username
@app.route('/login',methods = ['POST', 'GET'])
def sing_in():
if request.method == 'POST':
user = request.form['name']
return redirect(url_for('successfully_signed_in', username = user))
else:
user = request.args.get('name')
return redirect(url_for('successfully_signed_in', username = user))
if __name__ == '__main__':
app.run(debug = True)
login.html :
<html>
<body>
<form action = "/login" method = "post">
<p>Enter Name:</p>
<p><input type = "text" name = "name" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
В изначальном примере атрибут name = "nm", но если я меняю его на какое-либо другое имя,
то получаю эту ошибку, при том что и в html и в python коде эти имена совпадают,
как видно в примере приведенного мною кода в обоих местах это name.
Если меняю на nm, то все работает.
Вопрос первый - почему вызвано такое поведение?
Вопрос второй - почему request.form завязоно не на самом атрибуте, а на его значении, то есть nm, как в примере?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости