Ошибка при работе с Flask : werkzeug.exceptions.BadRequestKeyError: 400

185
01 ноября 2021, 12:50

Сама ошибка:
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, как в примере?

READ ALSO
Иероглифы в запросе

Иероглифы в запросе

Отправляю запрос с кириллицей, а сервер на питоне получает другой текст: И можно ли как-нибудь сразу отправить текст с кириллицей или преобразовать...

79
Каракули вместо кириллицы

Каракули вместо кириллицы

При отправке get или post запроса и чтение его с помощью requestquery и request

139
После Transform scale высота родителя остаётся

После Transform scale высота родителя остаётся

Есть ребёнок и родитель, у ребёнка размеры 1610x900, у родителя высота примерно 300pxДобавил ребёнка в родителя, transform:scale(0

125