Введение
Учебник по Python Flask "Работа с оболочкой" содержит руководство по использованию интерактивной оболочки в Flask для выполнения Python-команд в режиме реального времени. В этом учебнике объясняется, как создать контекст запроса, запускать функции до/после запроса и улучшить опыт работы с оболочкой.
Примечание: вам нужно создать файл кода самостоятельно и запустить его в среде. Вы можете предварительно просмотреть статус сервиса Flask на Web 5000.
Запуск оболочки
Для запуска оболочки используйте команду flask shell, которая автоматически инициализирует оболочку с загруженным контекстом приложения.
Интерфейс командной строки:
flask shell
Создание контекста запроса
Для создания правильного контекста запроса в оболочке используйте метод test_request_context(), который создает объект RequestContext. В оболочке вручную нажмите и отпустите контекст запроса с использованием методов push() и pop().
## File: shell.py
## Execution: python shell.py
from flask import Flask
app = Flask(__name__)
## Создайте контекст запроса
ctx = app.test_request_context()
## Нажмите контекст запроса
ctx.push()
## Работайте с объектом запроса
## Отпустите контекст запроса
ctx.pop()
Запуск функций до/после запроса
Создав контекст запроса, код, который обычно выполняется перед запросом, не срабатывает. Чтобы имитировать функциональность до запроса, вызовите метод preprocess_request(). Это гарантирует, что соединения с базой данных и другие ресурсы доступны.
## File: shell.py
## Execution: python shell.py
from flask import Flask
app = Flask(__name__)
## Создайте контекст запроса
ctx = app.test_request_context()
ctx.push()
## Имитируйте функциональность до запроса
app.preprocess_request()
## Работайте с объектом запроса
## Отпустите контекст запроса
ctx.pop()
Чтобы имитировать функциональность после запроса, вызовите метод process_response() с фиктивным объектом ответа перед отпусканием контекста запроса.
## File: shell.py
## Execution: python shell.py
from flask import Flask
app = Flask(__name__)
## Создайте контекст запроса
ctx = app.test_request_context()
ctx.push()
## Имитируйте функциональность до запроса
app.preprocess_request()
## Работайте с объектом запроса
## Имитируйте функциональность после запроса
app.process_response(app.response_class())
## Отпустите контекст запроса
ctx.pop()
Улучшение опыта работы с оболочкой
Для улучшения опыта работы с оболочкой создайте модуль (shelltools.py), содержащий вспомогательные методы, которые можно импортировать в интерактивную сессию. Этот модуль может содержать дополнительные вспомогательные методы для задач, таких как инициализация базы данных или удаление таблиц.
## File: shelltools.py
def initialize_database():
## Код для инициализации базы данных
pass
def drop_tables():
## Код для удаления таблиц
pass
В интерактивной оболочке импортируйте нужные методы из модуля shelltools.
## File: shell.py
## Execution: python shell.py
from shelltools import initialize_database, drop_tables
## Импортируйте нужные методы из модуля shelltools
from shelltools import *
## Используйте импортированные методы
initialize_database()
drop_tables()
Резюме
Учебник "Работа с оболочкой" содержит пошаговые инструкции по использованию интерактивной оболочки в Flask. Объясняется, как создать контекст запроса, запустить функции до/после запроса и улучшить опыт работы с оболочкой путём импорта вспомогательных методов из отдельного модуля.