Маленькое добавление ответа @Mark Hildreth.
Контекстный стек выглядит как {thread.get_ident(): []}
, где []
называется «стек», потому что используется только append
(push
), pop
и [-1]
(__getitem__(-1)
). Таким образом, стек контекста будет сохранять фактические данные для потока нити или зеленого.
current_app
, g
, request
, session
и т. Д. Является LocalProxy
объектом, который просто переопределяет специальные методы __getattr__
, __getitem__
, __call__
, __eq__
и т. д. и вернуть значение из верхнего стека контекста ([-1]
) по имени аргумента (например, current_app
, request
). LocalProxy
необходимо импортировать эти объекты один раз, и они не будут пропускать актуальность. Так что лучше просто импортировать request
, где бы вы ни находились в коде, вместо этого играйте с отправкой аргумента запроса до ваших функций и методов. Вы можете легко писать собственные расширения вместе с ним, но не забывайте, что легкомысленное использование может затруднить понимание кода.
Проведите время, чтобы понять https://github.com/mitsuhiko/werkzeug/ blob / master / werkzeug / local.py .
Итак, как заполняется оба стека? По запросу Flask
:
request_context
по средам (init map_adapter
, путь соответствия) request_context
создать app_context
, если он пропустил и нажал на стек контекста приложения, этот запрос был нажат для запроса сеанса инициализации контекста, если он пропустил Если вы хотите отобразить специальные символы в атрибуте заголовка, вы можете просто ввести сам символ (используйте é
, а не é
), вам просто нужна кодировка символов. Добавьте следующий тег <meta>
в свой <head>
:
<meta charset="utf-8" />
А затем установите атрибут title
своей кнопки следующим образом:
title="Réinitialiser la recherche"
И это должно сработать. [119 ]
Проблема была решена, когда мы использовали R\u00E9initialiser la recherche
вместо Réinitialiser