Flask中App Context与Request Context

在阅读《Flask Web开发》的过程中,出现了类似程序上下文与请求上下文的字眼。“上下文”这个字眼一般都是出现在阅读中的。在这里的突然出现,着实让我一头雾水。在我看来,作者将"Context"翻译成“上下文”,亦可以翻译为“背景”,有助于理解。
上下文就是一种背景,什么样的背景呢?来看下面一个例子:

from flask import Flask
app = Falsk(__name__)

@app.route('/')
def index():
    return '

Hello World!

' if __name__ == '__main__': app.run(debug=True)

这是一个很简单的Flask程序,它可以响应一个请求:当在浏览器地址中输入http://localhost:5000/时,会返回一个页面。其中index()是一个视图函数。视图函数要是想访问请求对象,显而易见是要将请求对象的参数传入视图函数。但是,如果请求对象的参数变得很多,那么就要将每个视图函数都增加相应的数量的参数,这样会非常麻烦且冗杂。
falsk可以创造一种“背景(Context)”,使得请求对象的参数全局化,也就是在这个背景的域里,所有的请求对象参数都能在视图函数中被访问,而不需要在视图函数中显式的增加参数。

from flask import request

@app.route(‘/’)
def index():
    user_agent = request.header.get('User-Agent')
    return '

Your Brower is {}

'.format(user_agent)

其中request就被临时变成了全局变量。

你可能感兴趣的:(Flask中App Context与Request Context)