Исключение 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,
который содержит текстовое описание ошибки