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

Метод init_every_request

Атрибут init_every_request применяется к классу представления, унаследованному от View. По умолчанию его значение равно True, и Flask создаёт новый экземпляр класса для каждого входящего запроса. Если установить False, экземпляр создаётся один раз при регистрации представления и переиспользуется для всех последующих запросов. Такой режим полезен, когда в __init__ выполняется дорогая инициализация, а состояние между запросами не изменяется.

Синтаксис

class MyView(View): init_every_request = False

Пример

Давайте создадим представление, которое создаёт новый экземпляр на каждый запрос, и посмотрим на счётчик:

from flask import Flask from flask.views import View app = Flask(__name__) class IndexView(View): def dispatch_request(self): return 'hello' app.add_url_rule('/', view_func=IndexView.as_view('index'))

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

hello

Пример

Давайте отключим создание нового экземпляра на каждый запрос и заведём счётчик в __init__:

from flask import Flask from flask.views import View app = Flask(__name__) class CounterView(View): init_every_request = False def __init__(self): self.count = 0 def dispatch_request(self): self.count += 1 return str(self.count) app.add_url_rule('/count', view_func=CounterView.as_view('count'))

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

"1"

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

"2"

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

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