在 Shell 中使用 Flask¶
Changelog
New in version 0.3.
喜欢 Python 的原因之一是交互式的 shell ,它可以让你实时运行 Python 命令,并且立即得到结果。 Flask 本身不带交互 shell ,因为它不需要特定的前期设置,只要在 shell 中导入你的应用就可以开始使用了。
有些辅助工具可以让你在 shell 中更舒服。在交互终端中最大的问题是你不会像浏览器一样触发一个请求,这就意味着无法使用 和 等对象。那么如何在 shell 中测试依赖这些对象的代码呢?
在读下去之前最好你已经读过 请求情境 一节。
自 Flask 0.11 版开始,推荐在 shell 中使用 flask shell
命令,它可以为你做许多自动化工作。比如在 shell 中自动初始化应用情境。
更多信息参见 。
在 shell 中创建一个正确的请求情境的最简便的方法是使用test_request_context
方法。这个方法会创建一个 :
通常你会使用 with 语句来激活请求对象,但是在 shell 中,可以简便地手动使用push()
和 方法:
- >>> ctx.push()
仅仅创建一个请求情境还是不够的,需要在请求前运行的代码还是没有运行。比如,在请求前可以会需要转接数据库,或者把用户信息储存在 g
对象中。
使用 可以方便地模拟请求前/后动作:
- >>> ctx.push()
- >>> app.preprocess_request()
请记住, preprocess_request()
函数可以会返回一个响应对象。如果返回的话请忽略它。
如果要关闭一个请求,那么你需要在请求后函数(由 触发)作用于响应对象前关闭:
teardown_request()
函数会在环境弹出后自动执行。我们可以使用这些函数来销毁请求情境所需要使用的资源(如数据库连接)。