Метод signal
Метод signal применяется к экземпляру класса Namespace
и создаёт новый сигнал, привязанный к этому пространству имён.
Первым параметром передаётся имя сигнала, а вторым - его описание
в виде строки документации. Метод возвращает объект сигнала, который
можно использовать для подключения обработчиков и отправки событий.
Пространства имён позволяют группировать сигналы по логическому
признаку, например по расширению или модулю. Каждый созданный сигнал
получает полное имя вида 'namespace.name', что упрощает
их идентификацию.
Синтаксис
Namespace.signal(name, doc=None)
Пример
Давайте создадим пространство имён и объявим в нём сигнал:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
mynamespace = Namespace()
my_signal = mynamespace.signal('user_login')
@my_signal.connect
def on_user_login(sender, **extra):
print('user logged in', extra.get('username'))
@app.route('/')
def index():
my_signal.send(app, username='abcde')
return 'hello'
Результат выполнения кода при обращении к адресу '/':
hello
Пример
Давайте посмотрим полное имя созданного сигнала:
from flask.signals import Namespace
mynamespace = Namespace()
my_signal = mynamespace.signal('user_login')
print(my_signal.name)
Результат выполнения кода:
"mynamespace.user_login"
Пример
Давайте создадим несколько сигналов в одном пространстве имён:
from flask.signals import Namespace
mynamespace = Namespace()
signal_started = mynamespace.signal('started')
signal_finished = mynamespace.signal('finished')
print(signal_started.name)
print(signal_finished.name)
Результат выполнения кода:
"mynamespace.started"
"mynamespace.finished"