РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
413 of 643 menu

Исключение BadRequestKeyError

Исключение BadRequestKeyError вызывается, когда при обращении к словарю запроса (например, request.form или request.args) запрашивается ключ, которого в нём нет. Оно наследуется от BadRequest и содержит атрибут key с именем отсутствующего ключа. Это исключение помогает отладить ситуации, когда форма отправлена без обязательного поля или GET-параметр не передан в URL.

Синтаксис

from werkzeug.exceptions import BadRequestKeyError BadRequestKeyError(key)

Пример

Давайте попробуем получить ключ user из данных POST-запроса, когда его там нет:

from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): username = request.form['user'] return f'Hello, {username}'

При отправке POST-запроса без поля user Flask вернёт ошибку 400 Bad Request с текстом:

400 Bad Request: The browser (or proxy) sent a request that this server could not understand.

Пример

Давайте перехватим исключение BadRequestKeyError и вернём понятное сообщение пользователю:

from flask import Flask, request from werkzeug.exceptions import BadRequestKeyError app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): try: username = request.form['user'] except BadRequestKeyError: return 'Field "user" is required', 400 return f'Hello, {username}'

Результат выполнения кода для запроса без поля user:

Field "user" is required

Пример

Давайте используем метод get вместо обращения по ключу, чтобы избежать исключения:

from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): username = request.form.get('user', 'guest') return f'Hello, {username}'

Результат выполнения кода для запроса без поля user:

Hello, guest

Смотрите также

  • класс Exception,
    базовый класс всех исключений Flask
  • исключение BadRequest,
    родительский класс для ошибок 400
  • атрибут code,
    который хранит HTTP-код ошибки
  • атрибут description,
    который содержит текстовое описание ошибки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить