笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

应用上下文

发布者: 笨鸟自学网



应用上下文的作用

应用上下问存在的主要原因是,在过去,请求上下文被附加了一堆函数,但是又没 有什么好的解决方案。因为 Flask 设计的支柱之一是你可以在一个 Python 进程中 拥有多个应用。

那么代码如何找到“正确的”应用?在过去,我们推荐显式地到处传递应用,但是这 会让我们在使用不是以这种理念设计的库时遇到问题。

解决上述问题的常用方法是使用后面将会提到的 current_app 代 理对象,它被绑定到当前请求的应用的引用。既然无论如何在没有请求时创建一个 这样的请求上下文是一个没有必要的昂贵操作,应用上下文就被引入了。

创建应用上下文

有两种方式来创建应用上下文。第一种是隐式的:无论何时当一个请求上下文被压栈时, 如果有必要的话一个应用上下文会被一起创建。由于这个原因,你可以忽略应用 上下文的存在,除非你需要它。

第二种是显式地调用 app_context() 方法:

from flask import Flask, current_app

app = Flask(__name__)
with app.app_context():
    # within this block, current_app points to app.
    print current_app.name

在配置了 SERVER_NAME 时,应用上下文也被用于 url_for() 函 数。这允许你在没有请求时生成 URL 。

应用上下文局部变量

应用上下文会在必要时被创建和销毁。它不会在线程间移动,并且也不会在不同的请求 之间共享。正因为如此,它是一个存储数据库连接信息或是别的东西的最佳位置。内部 的栈对象叫做 flask._app_ctx_stack 。扩展可以在最顶层自由地存储额外信 息,想象一下它们用一个充分独特的名字在那里存储信息,而不是在 flask.g 对象里, flask.g 是留给用户的代码用的。

更多详情见 Flask 扩展开发 。


上一篇:即插视图下一篇:请求上下文

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-10-18 14:09 , Processed in 0.016098 second(s), 17 queries .

© 2001-2020

返回顶部