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

Метод dispatch_request

Метод dispatch_request применяется к классу View и вызывается Flask при обработке запроса. Первым параметром передаётся объект запроса, а метод возвращает результат того обработчика, который соответствует HTTP-методу запроса. По умолчанию он ищет метод с именем HTTP-метода в нижнем регистре: get, post, put, patch, delete и так далее. Если подходящий метод не найден, возвращается ошибка 405.

Метод можно переопределить в своём классе-наследнике, чтобы изменить логику выбора обработчика.

Синтаксис

def dispatch_request(self): ...

Пример

Давайте создадим класс-наследник View с методами get и post и зарегистрируем его как представление:

from flask import Flask from flask.views import View app = Flask(__name__) class MyView(View): def get(self): return 'hello' def post(self): return 'article' app.add_url_rule('/page/', view_func=MyView.as_view('page'))

При GET-запросе на адрес /page/ метод dispatch_request найдёт метод get и вернёт его результат. Результат выполнения кода:

hello

При POST-запросе на тот же адрес будет вызван метод post. Результат выполнения кода:

<+html+> article <-html+>

Пример

Давайте переопределим dispatch_request, чтобы обрабатывать все методы одним способом:

from flask import Flask, request from flask.views import View app = Flask(__name__) class MyView(View): def dispatch_request(self): return 'method: ' + request.method app.add_url_rule('/page/', view_func=MyView.as_view('page'))

Теперь любой запрос обрабатывается одинаково. Результат выполнения кода для GET-запроса:

method: GET

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

method: POST

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

  • класс View,
    который является базой для классовых представлений
  • метод as_view,
    который превращает класс в функцию-представление
  • метод get,
    который обрабатывает GET-запрос
  • метод post,
    который обрабатывает POST-запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить