使用 Shell

FlaskFlaskBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Python Flask 教程“使用 Shell”提供了有关在 Flask 中使用交互式 Shell 实时执行 Python 命令的指导。本教程解释了如何创建请求上下文、触发请求前/后函数以及改善 Shell 体验。

注意:你需要自己创建代码文件并在环境中运行它。你可以在 Web 5000 上预览 Flask 服务状态。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL flask(("`Flask`")) -.-> flask/DataHandlingGroup(["`Data Handling`"]) flask(("`Flask`")) -.-> flask/CoreConceptsGroup(["`Core Concepts`"]) flask(("`Flask`")) -.-> flask/DevelopmentToolsGroup(["`Development Tools`"]) flask/DataHandlingGroup -.-> flask/incoming_request_data("`Incoming Request Data`") flask/DataHandlingGroup -.-> flask/application_globals("`Application Globals`") flask/DataHandlingGroup -.-> flask/response_objects("`Response Objects`") flask/CoreConceptsGroup -.-> flask/application_object("`Application Object`") flask/CoreConceptsGroup -.-> flask/session_interface("`Session Interface`") flask/CoreConceptsGroup -.-> flask/json_support("`JSON Support`") flask/CoreConceptsGroup -.-> flask/class_based_views("`Class-Based Views`") flask/CoreConceptsGroup -.-> flask/useful_internals("`Useful Internals`") flask/DevelopmentToolsGroup -.-> flask/command_line_interface("`Command Line Interface`") subgraph Lab Skills flask/incoming_request_data -.-> lab-136111{{"`使用 Shell`"}} flask/application_globals -.-> lab-136111{{"`使用 Shell`"}} flask/response_objects -.-> lab-136111{{"`使用 Shell`"}} flask/application_object -.-> lab-136111{{"`使用 Shell`"}} flask/session_interface -.-> lab-136111{{"`使用 Shell`"}} flask/json_support -.-> lab-136111{{"`使用 Shell`"}} flask/class_based_views -.-> lab-136111{{"`使用 Shell`"}} flask/useful_internals -.-> lab-136111{{"`使用 Shell`"}} flask/command_line_interface -.-> lab-136111{{"`使用 Shell`"}} end

启动 Shell

要启动 Shell,请使用 flask shell 命令,该命令会使用已加载的应用程序上下文自动初始化 Shell。

命令行界面:

flask shell

创建请求上下文

要在 shell 中创建合适的请求上下文,请使用 test_request_context() 方法,该方法会创建一个 RequestContext 对象。在 shell 中,使用 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()

改善 Shell 体验

为了改善 Shell 体验,创建一个包含辅助方法的模块(shelltools.py),这些方法可以导入到交互式会话中。该模块可以包含用于诸如初始化数据库或删除表等任务的其他辅助方法。

## File: shelltools.py

def initialize_database():
    ## 初始化数据库的代码
    pass

def drop_tables():
    ## 删除表的代码
    pass

在交互式 Shell 中,从 shelltools 模块导入所需的方法。

## File: shell.py
## Execution: python shell.py

from shelltools import initialize_database, drop_tables

## 从 shelltools 模块导入所需的方法
from shelltools import *

## 使用导入的方法
initialize_database()
drop_tables()

总结

“使用 Shell”教程提供了在 Flask 中使用交互式 Shell 的分步说明。它解释了如何创建请求上下文、触发请求前/后函数,以及通过从单独的模块导入辅助方法来改善 Shell 体验。

您可能感兴趣的其他 Flask 教程