记录Python面试常被问到的后台开发问题。
1、Flask中请求上下文和应用上下文的区别和作用?
current_app、g是应用上下文。
request、session是请求上下文。
区别:
请求上下文:保存了客户端和服务器交互的数据。
应用上下文:flask应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等。
两者作用:
请求上下文:Flask从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。请求对象是一个很好的例子,它封装了客户端发送的HTTP请求。要想让视图函数能够访问请求对象,一个显而易见的方式是将其作为参数传入视图函数,不过这会导致程序中每个视图函数都增加一个参数,除了访问请求对象,如果视图函数在处理请求时还要访问其他对象,情况会变得更糟。为了避免大量可有可无的参数把视图函数弄得一团糟,Flask使用上下文临时把某些对象变为全局可访问。
应用上下文:它的字面意思是应用上下文,但它不是一直存在的,它只是请求上下文中的一个对app的代理(人),所谓local proxy。它的作用主要是帮助request获取当前的应用,它是伴request而生,随request而灭的。